diff options
Diffstat (limited to 'TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h')
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h | 159 |
1 files changed, 107 insertions, 52 deletions
diff --git a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h index 132a9459abc..119684c5083 100644 --- a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h +++ b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h @@ -11,16 +11,14 @@ #include "Activator_Info.h" #include "Forwarder.h" #include "LiveCheck.h" +#include "ImR_ResponseHandler.h" #include "Locator_Options.h" #include "Server_Info.h" #include "ace/Auto_Ptr.h" -#include "AsyncStartupWaiter_i.h" #include "AsyncAccessManager.h" #include "tao/IORTable/IORTable.h" #include "ImR_LocatorS.h" -#include "AsyncStartupWaiterS.h" -#include "LiveCheck.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once @@ -38,7 +36,8 @@ class UpdateableServerInfo; /// requests an activator to take care of activating the /// corresponding server and raises a forward exception to the /// client pointing to the correct server. -class Locator_Export ImR_Locator_i : public virtual POA_ImplementationRepository::Locator +class Locator_Export ImR_Locator_i : + public virtual POA_ImplementationRepository::AMH_Locator { public: ImR_Locator_i(); @@ -65,40 +64,76 @@ public: // Activator->Locator - virtual CORBA::Long register_activator (const char* name, - ImplementationRepository::Activator_ptr admin); - virtual void unregister_activator (const char* name, - CORBA::Long token); - virtual void notify_child_death (const char* name); + virtual void register_activator + (ImplementationRepository::AMH_LocatorResponseHandler_ptr _tao_rh, + const char* name, + ImplementationRepository::Activator_ptr admin); + + virtual void unregister_activator + (ImplementationRepository::AMH_LocatorResponseHandler_ptr _tao_rh, + const char* name, + CORBA::Long token); + + virtual void notify_child_death + (ImplementationRepository::AMH_LocatorResponseHandler_ptr _tao_rh, + const char* name); // tao_imr->Locator - virtual void activate_server (const char * name); - virtual void add_or_update_server (const char * name, - const ImplementationRepository::StartupOptions &options); - virtual void remove_server (const char * name); - virtual void shutdown_server (const char * name); - virtual void find (const char * name, - ImplementationRepository::ServerInformation_out info); - virtual void list (CORBA::ULong how_many, - CORBA::Boolean determine_active_status, - ImplementationRepository::ServerInformationList_out server_list, - ImplementationRepository::ServerInformationIterator_out server_iterator); - virtual void shutdown(CORBA::Boolean activators, CORBA::Boolean servers); + virtual void activate_server + (ImplementationRepository::AMH_AdministrationResponseHandler_ptr _tao_rh, + const char * name); + + virtual void add_or_update_server + (ImplementationRepository::AMH_AdministrationResponseHandler_ptr _tao_rh, + const char * name, + const ImplementationRepository::StartupOptions &options); + + virtual void remove_server + (ImplementationRepository::AMH_AdministrationResponseHandler_ptr _tao_rh, + const char * name); + + virtual void shutdown_server + (ImplementationRepository::AMH_AdministrationResponseHandler_ptr _tao_rh, + const char * name); + + virtual void find + (ImplementationRepository::AMH_AdministrationResponseHandler_ptr _tao_rh, + const char * name); + + virtual void list + (ImplementationRepository::AMH_AdministrationResponseHandler_ptr _tao_rh, + CORBA::ULong how_many, + CORBA::Boolean determine_active_status); + + virtual void shutdown + (ImplementationRepository::AMH_AdministrationResponseHandler_ptr _tao_rh, + CORBA::Boolean activators, + CORBA::Boolean servers); // Server->Locator - virtual void server_is_running (const char* name, - const char* partial_ior, - ImplementationRepository::ServerObject_ptr server_object); - virtual void server_is_shutting_down (const char * name); + virtual void server_is_running + (ImplementationRepository::AMH_AdministrationResponseHandler_ptr _tao_rh, + const char* name, + const char* partial_ior, + ImplementationRepository::ServerObject_ptr server_object); + + virtual void server_is_shutting_down + (ImplementationRepository::AMH_AdministrationResponseHandler_ptr _tao_rh, + const char * name); // Used by the INS_Locator to start a sever given an object name char* activate_server_by_object (const char* object_name); char* activate_server_by_name (const char * name, bool manual_start); + + // Helper function also used by the Forwarder + void activate_server_by_name (const char * name, bool manual_start, - ImR_ReplyHandler *rh); + ImR_ResponseHandler *rh); + + // interfaces to aid with collaboration LiveCheck &pinger (void); PortableServer::POA_ptr root_poa (void); @@ -109,27 +144,15 @@ public: private: - char* activate_server_i (UpdateableServerInfo& info, - bool manual_start); - void activate_server_i (UpdateableServerInfo& info, bool manual_start, - ImR_ReplyHandler *rh); - - char* activate_perclient_server_i (UpdateableServerInfo& info, - bool manual_start); - - void activate_perclient_server_i (UpdateableServerInfo& info, - bool manual_start, - ImR_ReplyHandler *rh); - - ImplementationRepository::StartupInfo* - start_server(UpdateableServerInfo& info, - bool manual_start, - int& waiting_clients); + ImR_ResponseHandler *rh); bool is_alive(UpdateableServerInfo& info); + +#if 0 int is_alive_i(UpdateableServerInfo& info); +#endif void unregister_activator_i(const char* activator); @@ -152,7 +175,6 @@ private: private: // The class that handles the forwarding. - ImR_DSI_Forwarder dsi_forwarder_; // Used for the forwarding of any type of POA. @@ -176,9 +198,6 @@ private: auto_ptr<Locator_Repository> repository_; - AsyncStartupWaiter_i waiter_svt_; - ImplementationRepository::AsyncStartupWaiter_var waiter_; - bool read_only_; ACE_Time_Value startup_timeout_; ACE_Time_Value ping_interval_; @@ -208,22 +227,58 @@ class SyncListener : public LiveListener //---------------------------------------------------------------------------- /* - * @class ImR_Loc_ReplyHandler + * @class ImR_Loc_ResponseHandler + * + * @brief specialized reply handler for Locator interface calls which have a + * void return. + */ +class ImR_SyncResponseHandler : public ImR_ResponseHandler +{ +public: + ImR_SyncResponseHandler (CORBA::ORB_ptr orb); + virtual ~ImR_SyncResponseHandler (void); + + virtual void send_ior (const char *pior); + virtual void send_exception (CORBA::Exception *ex); + + char *wait_for_result (void); + +private: + CORBA::String_var result_; + CORBA::Exception *excep_; + CORBA::ORB_var orb_; +}; + +//---------------------------------------------------------------------------- +/* + * @class ImR_Loc_ResponseHandler * * @brief specialized reply handler for Locator interface calls which have a * void return. */ -class ImR_Loc_ReplyHandler : public ImR_ReplyHandler +class ImR_Loc_ResponseHandler : public ImR_ResponseHandler { public: - ImR_Loc_ReplyHandler (ImplementationRepository::AMH_LocatorResponseHandler_ptr rh); - virtual ~ImR_Loc_ReplyHandler (void); + enum Loc_Operation_Id + { + LOC_ACTIVATE_SERVER, + LOC_ADD_OR_UPDATE_SERVER, + LOC_REMOVE_SERVER, + LOC_SHUTDOWN_SERVER, + LOC_SERVER_IS_RUNNING, + LOC_SERVER_IS_SHUTTING_DOWN, + }; + + ImR_Loc_ResponseHandler (Loc_Operation_Id opid, + ImplementationRepository::AMH_AdministrationResponseHandler_ptr rh); + virtual ~ImR_Loc_ResponseHandler (void); virtual void send_ior (const char *pior); - virtual void send_exception (void); + virtual void send_exception (CORBA::Exception *ex); private: - ImplementationRepository::AMH_LocatorResponseHandler_var rh_; + Loc_Operation_Id op_id_; + ImplementationRepository::AMH_AdministrationResponseHandler_var resp_; }; |