diff options
Diffstat (limited to 'trunk/TAO/orbsvcs/examples/Notify/Lanes/Consumer.h')
-rw-r--r-- | trunk/TAO/orbsvcs/examples/Notify/Lanes/Consumer.h | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/examples/Notify/Lanes/Consumer.h b/trunk/TAO/orbsvcs/examples/Notify/Lanes/Consumer.h new file mode 100644 index 00000000000..0f3c3d76dd9 --- /dev/null +++ b/trunk/TAO/orbsvcs/examples/Notify/Lanes/Consumer.h @@ -0,0 +1,111 @@ +/* -*- C++ -*- */ +/** + * @file Consumer.h + * + * $Id$ + * + * @author Pradeep Gore <pradeep@oomworks.com> + * + * + */ + +#ifndef TAO_Notify_CONSUMER_H +#define TAO_Notify_CONSUMER_H + +#include /**/ "ace/pre.h" + +#include "ORB_Objects.h" +#include "tao/RTCORBA/RTCORBA.h" +#include "orbsvcs/CosNotifyChannelAdminS.h" +#include "orbsvcs/CosNotifyCommC.h" +#include "ace/SString.h" + +/** + * @class TAO_Notify_Lanes_Consumer + * + * @brief Consumer + * + */ + +class TAO_Notify_Lanes_Consumer + : public POA_CosNotifyComm::StructuredPushConsumer +{ +public: + /// Constuctor + TAO_Notify_Lanes_Consumer (TAO_Notify_ORB_Objects& orb_objects); + + /// Init + void init (PortableServer::POA_var& poa, CosNotifyChannelAdmin::ConsumerAdmin_var& admin, ACE_CString& event_type ACE_ENV_ARG_DECL); + + /// Run + void run (ACE_ENV_SINGLE_ARG_DECL_NOT_USED); + +protected: + // = Data members + + /// ORB Objects. + TAO_Notify_ORB_Objects orb_objects_; + + /// The proxy that we are connected to. + CosNotifyChannelAdmin::StructuredProxyPushSupplier_var proxy_supplier_; + + /// The proxy_supplier id. + CosNotifyChannelAdmin::ProxyID proxy_supplier_id_; + + // POA. + PortableServer::POA_var default_POA_; + + // The Consumer Admin + CosNotifyChannelAdmin::ConsumerAdmin_var admin_; + + /// The Type the Consumer should subscribe to. + ACE_CString event_type_; + + // = Methods + /// Destructor + virtual ~TAO_Notify_Lanes_Consumer (void); + + // = ServantBase operations + virtual PortableServer::POA_ptr _default_POA (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS); + + /// Connect the Consumer to the EventChannel. + /// Creates a new proxy supplier and connects to it. + void connect (ACE_ENV_SINGLE_ARG_DECL); + + /// Disconnect the supplier. + void disconnect (ACE_ENV_SINGLE_ARG_DECL); + + /// Deactivate. + void deactivate (ACE_ENV_SINGLE_ARG_DECL); + + // = NotifyPublish method + virtual void offer_change ( + const CosNotification::EventTypeSeq & added, + const CosNotification::EventTypeSeq & removed + ACE_ENV_ARG_DECL + ) + ACE_THROW_SPEC (( + CORBA::SystemException, + CosNotifyComm::InvalidEventType + )); + + // = StructuredPushSupplier methods + virtual void push_structured_event ( + const CosNotification::StructuredEvent & notification + ACE_ENV_ARG_DECL + ) + ACE_THROW_SPEC (( + CORBA::SystemException, + CosEventComm::Disconnected + )); + + virtual void disconnect_structured_push_consumer ( + ACE_ENV_SINGLE_ARG_DECL + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )); +}; + +#include /**/ "ace/post.h" +#endif /* TAO_Notify_CONSUMER_H */ |