connection_manager.h
来自「这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用」· C头文件 代码 · 共 153 行
H
153 行
//Connection_Manager.h,v 1.4 2003/06/25 18:41:47 yamuna Exp
// ============================================================================
//
// = 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_Utils.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_;
};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?