📄 event_channel.h
字号:
/* -*- C++ -*- */// Event_Channel.h,v 4.18 2002/04/11 02:31:03 ossama Exp// ============================================================================//// = LIBRARY// gateway//// = FILENAME// Event_Channel.h//// = AUTHOR// Doug Schmidt <schmidt@cs.wustl.edu>//// ============================================================================#ifndef ACE_EVENT_CHANNEL#define ACE_EVENT_CHANNEL#include "Connection_Handler_Connector.h"#include "Connection_Handler_Acceptor.h"#include "Consumer_Dispatch_Set.h"#include "Event_Forwarding_Discriminator.h"#include "ace/svc_export.h"typedef ACE_Null_Mutex MAP_MUTEX;class ACE_Svc_Export Event_Channel : public ACE_Event_Handler{ // = TITLE // Define a generic Event_Channel. // // = DESCRIPTION // The inspiration for this class is derived from the CORBA COS // Event Channel, though the design is simplified. // // We inherit from <ACE_Event_Handler> so that we can be // registered with an <ACE_Reactor> to handle timeouts.public: // = Initialization and termination methods. Event_Channel (void); ~Event_Channel (void); virtual int open (void * = 0); // Open the channel. virtual int close (u_long = 0); // Close down the Channel. // = Proxy management methods. int initiate_connection_connection (Connection_Handler *, int sync_directly = 0); // Initiate the connection of the <Connection_Handler> to its peer. // Second paratemer is used for thread connection-handler which will // block the connecting procedure directly, need not care // Options::blocking_semantics(). int complete_connection_connection (Connection_Handler *); // Complete the initialization of the <Connection_Handler> once it's // connected to its Peer. int reinitiate_connection_connection (Connection_Handler *); // Reinitiate a connection asynchronously when the Peer fails. int cancel_connection_connection (Connection_Handler *); // Cancel a asynchronous connection. int bind_proxy (Connection_Handler *); // Bind the <Connection_Handler> to the <connection_map_>. int find_proxy (ACE_INT32 connection_id, Connection_Handler *&); // Locate the <Connection_Handler> with <connection_id>. int subscribe (const Event_Key &event_addr, Consumer_Dispatch_Set *cds); // Subscribe the <Consumer_Dispatch_Set> to receive events that // match <Event_Key>. // = Event processing entry point. virtual int put (ACE_Message_Block *mb, ACE_Time_Value * = 0); // Pass <mb> to the Event Channel so it can forward it to Consumers. void initiate_connector (void); // Actively initiate connections to the Peers. int initiate_acceptors (void); // Passively initiate the <Peer_Acceptor>s for Consumer and // Suppliers.private: int parse_args (int argc, char *argv[]); // Parse the command-line arguments. // = Methods for handling events. void routing_event (Event_Key *event_key, ACE_Message_Block *data); // Forwards the <data> to Consumer that have registered to receive // it, based on addressing information in the <event_key>. void subscription_event (ACE_Message_Block *data); // Add a Consumer subscription. int compute_performance_statistics (void); // Perform timer-based performance profiling. virtual int handle_timeout (const ACE_Time_Value &, const void *arg); // Periodically callback to perform timer-based performance // profiling. Connection_Handler_Connector connector_; // Used to establish the connections actively. Connection_Handler_Acceptor supplier_acceptor_; // Used to establish connections passively and create Suppliers. Connection_Handler_Acceptor consumer_acceptor_; // Used to establish connections passively and create Consumers. // = Make life easier by defining typedefs. typedef ACE_Map_Manager<CONNECTION_ID, Connection_Handler *, MAP_MUTEX> CONNECTION_MAP; typedef ACE_Map_Iterator<CONNECTION_ID, Connection_Handler *, MAP_MUTEX> CONNECTION_MAP_ITERATOR; typedef ACE_Map_Entry<CONNECTION_ID, Connection_Handler *> CONNECTION_MAP_ENTRY; CONNECTION_MAP connection_map_; // Table that maps <CONNECTION_ID>s to <Connection_Handler> *'s. Event_Forwarding_Discriminator efd_; // Map that associates an event to a set of <Consumer_Handler> *'s.};#endif /* ACE_EVENT_CHANNEL */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -