00001 #ifndef _IT_BUS_SERVICES_PEER_MONITOR_H_
00002 #define _IT_BUS_SERVICES_PEER_MONITOR_H_
00003
00004
00005
00006
00007 #ifndef IT_PMS_SVR_API
00008 #ifdef IT_PMS_SVR_API_EXPORT
00009 #define IT_PMS_SVR_API IT_DECLSPEC_EXPORT
00010 #else
00011 #define IT_PMS_SVR_API IT_DECLSPEC_IMPORT
00012 #endif
00013 #endif
00014
00015 #include <orbix_pdk/orb_plugin.hh>
00016 #include <it_bus/types.h>
00017 #ifdef IT_MINIMISE_INCLUDES
00018 #include <it_bus/wsaddressing_xsdTypes.h>
00019 #endif
00020
00021 namespace WS_Addressing
00022 {
00023 class EndpointReferenceType;
00024 }
00025
00026 namespace IT_Bus_Services
00027 {
00028 struct PeerMonitorId
00029 {
00030 IT_Bus::String base_id;
00031 IT_Bus::String element_id;
00032 };
00033
00034 class IT_PMS_SVR_API PingReceiverCallback
00035 {
00036 public:
00037 virtual ~PingReceiverCallback();
00038
00039 virtual void
00040 ping_failure(
00041 const PeerMonitorId& id
00042 ) = 0;
00043 };
00044
00045 class IT_PMS_SVR_API PeerMonitor : public CORBA::LocalObject
00046 {
00047 public:
00048
00049 virtual PeerMonitorId
00050 monitor(
00051 const WS_Addressing::EndpointReferenceType& peer,
00052 PingReceiverCallback* cb,
00053 IT_Bus::ULong timeout_msecs
00054 ) = 0;
00055
00056 virtual void
00057 stop_monitor(
00058 const IT_Bus::String& base_id,
00059 PingReceiverCallback* callback,
00060 bool deregister_interest = true
00061 ) = 0;
00062
00063 virtual const WS_Addressing::EndpointReferenceType&
00064 get_epr_reference() = 0;
00065
00066 virtual bool
00067 is_local_id(
00068 const PeerMonitorId& id
00069 ) = 0;
00070 };
00071 }
00072
00073 #endif