summaryrefslogtreecommitdiff
path: root/trunk/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h')
-rw-r--r--trunk/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h184
1 files changed, 184 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h b/trunk/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h
new file mode 100644
index 00000000000..397aa0af43e
--- /dev/null
+++ b/trunk/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h
@@ -0,0 +1,184 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_Event_Channel.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef FTEC_EVENT_CHANNEL_H
+#define FTEC_EVENT_CHANNEL_H
+
+#include "orbsvcs/FtRtEvent/EventChannel/ftrtec_export.h"
+#include "orbsvcs/FtRtecEventChannelAdminS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+class TAO_FTEC_Event_Channel_Impl;
+class TAO_FTEC_Become_Primary_Listener;
+
+class TAO_FTRTEC_Export TAO_FTEC_Event_Channel
+ : public POA_FtRtecEventChannelAdmin::EventChannel
+{
+public:
+
+
+ TAO_FTEC_Event_Channel(CORBA::ORB_var orb,
+ PortableServer::POA_var poa);
+
+ ~TAO_FTEC_Event_Channel();
+
+ enum MEMBERSHIP {
+ UNSPECIFIED,
+ PRIMARY,
+ BACKUP
+ };
+
+ /**
+ * Activates the FT Event Channel.
+ *
+ * If the FT EC is activated as a primary, the EC will register itself to the NameService.
+ * If it is activated as a backup, it will try to look up the primary from the NameService
+ * and then join the object group.
+ *
+ * @param membership Specify the role the activated event channel in an object group.
+ *
+ */
+ FtRtecEventChannelAdmin::EventChannel_ptr
+ activate(MEMBERSHIP membership ACE_ENV_ARG_DECL);
+
+ /**
+ * Registers a listener to accept the notication when this object
+ * becomes the primary of the object group.
+ */
+ void set_listener(TAO_FTEC_Become_Primary_Listener* listener);
+
+
+ /// RtecEventChannelAdmin::EventChannel Interface
+
+ virtual RtecEventChannelAdmin::ConsumerAdmin_ptr
+ for_consumers (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual RtecEventChannelAdmin::SupplierAdmin_ptr
+ for_suppliers (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual RtecEventChannelAdmin::Observer_Handle
+ append_observer (RtecEventChannelAdmin::Observer_ptr observer ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException, RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR,
+ RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER));
+
+ virtual void remove_observer (RtecEventChannelAdmin::Observer_Handle ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR,
+ RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER));
+
+ /// EventChannelFacade Interface, used by FTEC gateway
+
+ virtual ::FtRtecEventChannelAdmin::ObjectId * connect_push_consumer (
+ RtecEventComm::PushConsumer_ptr push_consumer,
+ const RtecEventChannelAdmin::ConsumerQOS & qos
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC (( CORBA::SystemException, RtecEventChannelAdmin::TypeError)) ;
+
+
+ virtual ::FtRtecEventChannelAdmin::ObjectId * connect_push_supplier (
+ RtecEventComm::PushSupplier_ptr push_supplier,
+ const RtecEventChannelAdmin::SupplierQOS & qos
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException)) ;
+
+ virtual void disconnect_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void disconnect_push_consumer (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException)) ;
+
+ virtual void suspend_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException, FtRtecEventComm::InvalidObjectID));
+
+ virtual void resume_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException, FtRtecEventComm::InvalidObjectID)) ;
+
+ virtual void push (
+ const FtRtecEventChannelAdmin::ObjectId & oid,
+ const RtecEventComm::EventSet & data
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException, FtRtecEventComm::InvalidObjectID));
+
+ /// FTRT::GroupManager Interfaces
+ /// These are used for inter-replica communications
+
+ void set_state (
+ const FTRT::State & s ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException, FTRT::InvalidState));
+
+ virtual void set_update (const FTRT::State & s ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException, FTRT::InvalidUpdate, FTRT::OutOfSequence));
+
+ virtual void oneway_set_update (const FTRT::State & s ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ virtual CORBA::Boolean start (
+ FTRT::FaultListener_ptr listener,
+ FTRT::Location_out cur
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void create_group (
+ const FTRT::ManagerInfoList & info_list,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException, FTRT::PredecessorUnreachable)) ;
+
+ virtual void join_group (
+ const FTRT::ManagerInfo & info
+ ACE_ENV_ARG_DECL
+ )ACE_THROW_SPEC ((CORBA::SystemException)) ;
+
+ virtual void add_member (
+ const FTRT::ManagerInfo & info,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException)) ;
+
+ virtual void remove_member (
+ const FTRT::Location & crashed_location,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void replica_crashed (
+ const FTRT::Location & location
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException)) ;
+
+
+private:
+ CORBA::ORB_var orb_;
+ PortableServer::POA_var poa_, persistent_poa_;
+ TAO_FTEC_Event_Channel_Impl* ec_impl_;
+};
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+#endif