diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/LWFT/HostMonitorImpl.h')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/LWFT/HostMonitorImpl.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/LWFT/HostMonitorImpl.h b/TAO/orbsvcs/orbsvcs/LWFT/HostMonitorImpl.h new file mode 100644 index 00000000000..a8b31f6bdc8 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/LWFT/HostMonitorImpl.h @@ -0,0 +1,74 @@ +// -*- C++ -*- +// $Id$ + +#ifndef __HOSTMONITORIMPL_H +#define __HOSTMONITORIMPL_H + +#include <string> + +#include "ace/Map_Manager.h" +#include "ace/Event_Handler.h" +#include "ace/Thread_Mutex.h" +#include "ace/SOCK_Connector.h" + +#include "HostMonitorS.h" + +#include "Failure_Handler.h" +#include "Utilization_Monitor.h" +#include "RM_Proxy.h" + +class Monitor_Thread; + +class HostMonitor_Export HostMonitorImpl + : public virtual POA_HostMonitor +{ +public: + + typedef ACE_Map_Manager <std::string, + Failure_Handler *, + ACE_Thread_Mutex> + ProcessHandlerMap; + + HostMonitorImpl (CORBA::ORB_ptr, Monitor_Thread *); + + int + drop_process (const std::string &process_id); + + virtual + ~HostMonitorImpl (); + + ::CORBA::Boolean + register_process (const char *process_id, + const char * hostname, + CORBA::Long port); + + ::CORBA::Boolean + unregister_process (const char *process_id); + + virtual ::CORBA::Short + heartbeat_port (void); + + void + dump (void); + +protected: + RM_Proxy * + create_RM_Proxy (void); + + void + remove_RM_Proxy (void); + + int + remove_process (std::string const &process_id); + +private: + Monitor_Thread *monitor_thread_; + CORBA::Short port_counter_; + std::auto_ptr <RM_Proxy> rm_proxy_; + std::auto_ptr <Utilization_Monitor> util_mon_; + ProcessHandlerMap process_map_; + ACE_Connector <Failure_Handler, ACE_SOCK_Connector> connector_; + CORBA::ORB_var orb_; +}; + +#endif // __HOSTMONITORIMPL_H |