diff options
Diffstat (limited to 'TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.h')
-rw-r--r-- | TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.h | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.h b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.h new file mode 100644 index 00000000000..8045519e6bc --- /dev/null +++ b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.h @@ -0,0 +1,152 @@ +//$Id$ + +// ============================================================================ +// +// = LIBRARY +// TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage +// +// = FILENAME +// Connection_Manager.h +// +// = DESCRIPTION +// This is a helper class that allows the senders bind to multiple +// receivers and receivers to bind to senders. It also lets the +// senders and receivers disconnect streams. +// +// = AUTHOR +// Yamuna Krishnamurthy <yamuna@cs.wustl.edu> +// +// ============================================================================ + +#include "orbsvcs/Naming/Naming_Client.h" +#include "orbsvcs/AV/AVStreams_i.h" +#include "orbsvcs/AV/Protocol_Factory.h" +#include "tao/PortableServer/PortableServer.h" + +class Endpoint_Addresses +{ + public: + ACE_CString sender_addr; + ACE_CString receiver_addr; +}; + +class Connection_Manager +{ + // = TITLE + // Defines the Connection Manager. + // + // = DESCRIPTION + // This is a helper class that allows the senders bind to + // multiple receivers and receivers to bind to senders. It also + // lets the senders and receivers disconnect streams. +public: + + Connection_Manager (void); + // Constructor + + ~Connection_Manager (void); + // Destructor + + int init (CORBA::ORB_ptr orb); + // Initialize this class. + + void bind_to_receivers (const ACE_CString &sender_name, + AVStreams::MMDevice_ptr sender + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + // Method that binds the sender to the Naming Service and retreives + // the references of any registered receivers. + + void connect_to_receivers (AVStreams::MMDevice_ptr sender + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + // Connect to the receivers that we found. + + void bind_to_sender (const ACE_CString &sender_name, + const ACE_CString &receiver_name, + AVStreams::MMDevice_ptr receiver + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + // Bind receiver to the sender. + + void connect_to_sender (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS); + // Connect to the sender that we found. + + void destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS); + // Destroy all streams. + + void destroy (const ACE_CString &flowname + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + // Destroy streams associated with <flowname>. + + void add_streamctrl (const ACE_CString &flowname, + TAO_StreamEndPoint *endpoint + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + // Add new streamctrl. + + // Map of receivers. + typedef ACE_Hash_Map_Manager<ACE_CString, + AVStreams::MMDevice_var, + ACE_Null_Mutex> + Receivers; + + // Map of protocol objects. + typedef ACE_Hash_Map_Manager<ACE_CString, + TAO_AV_Protocol_Object *, + ACE_Null_Mutex> + Protocol_Objects; + + + + // Map of streamctrl. + typedef ACE_Hash_Map_Manager<ACE_CString, + AVStreams::StreamCtrl_var, + ACE_Null_Mutex> + StreamCtrls; + + // Map of flownames and corresponding endpoint addresses + typedef ACE_Hash_Map_Manager<ACE_CString, + Endpoint_Addresses*, + ACE_Null_Mutex> + EP_Addr; + + // Map accessors. + Receivers &receivers (void); + Protocol_Objects &protocol_objects (void); + StreamCtrls &streamctrls (void); + + void load_ep_addr (const char* file_name); + +protected: + + + + void find_receivers (ACE_ENV_SINGLE_ARG_DECL); + + void add_to_receivers (CosNaming::BindingList &binding_list + ACE_ENV_ARG_DECL); + + TAO_Naming_Client naming_client_; + // The Naming Service client. + + // The maps. + Receivers receivers_; + Protocol_Objects protocol_objects_; + StreamCtrls streamctrls_; + EP_Addr ep_addr_; + + // Sender name. + ACE_CString sender_name_; + + // Sender device. + AVStreams::MMDevice_var sender_; + + // Sender context. + CosNaming::NamingContext_var sender_context_; + + // Receiver name. + ACE_CString receiver_name_; + + // Receiver device. + AVStreams::MMDevice_var receiver_; + + // Receiver context. + CosNaming::NamingContext_var receiver_context_; +}; |