Connector.h
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* Connector - Encapsulates a Socket connection */
  2. /* Copyright (c) 1999 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,05jun99,aim  created
  7. */
  8. #ifndef __INCConnector_h
  9. #define __INCConnector_h
  10. #include "ReactorTypes.h"
  11. #include "EventHandler.h"
  12. class Reactor;
  13. template <class SVC_HANDLER, PEER_CONNECTOR_1>
  14. class Connector : public EventHandler
  15.     {
  16.   public:
  17.     virtual ~Connector ();
  18.     Connector (Reactor *r);
  19.       
  20.     //virtual int open (Reactor *r = Reactor::instance ());
  21.     virtual int open (Reactor *r);
  22.     // Connection establishment methods.
  23.     virtual int connect
  24. (
  25. const PEER_CONNECTOR_ADDR& remoteAddr,
  26. SVC_HANDLER*& svcHandler = 0
  27. );
  28.     virtual int close ();
  29.     // Close down the Connector
  30.   protected:
  31.     Connector (); // ensure Connector is an ABC.
  32.     virtual int newSvcHandler (SVC_HANDLER*& svcHandler);
  33.     // Bridge method for creating a SVC_HANDLER.  The default is to
  34.     // create a new SVC_HANDLER only if SVC_HANDLER == 0.
  35.     virtual int connectSvcHandler
  36. (
  37. const PEER_CONNECTOR_ADDR& remoteAddr,
  38. SVC_HANDLER*& svcHandler = 0
  39. );
  40.     // Bridge method for connecting the <SvcHandler> to the
  41.     // <remote_addr>.  The default behavior delegates to the
  42.     // <PEER_CONNECTOR::connect>.
  43.     virtual int activateSvcHandler (SVC_HANDLER* svcHandler);
  44.     // Bridge method for activating a <svc_handler> with the appropriate
  45.     // concurrency strategy.  The default behavior of this method is to
  46.     // activate the SVC_HANDLER by calling its open() method (which
  47.     // allows the SVC_HANDLER to define its own concurrency strategy).
  48.     // However, subclasses can override this strategy to do more
  49.     // sophisticated concurrency activations (such as creating the
  50.     // SVC_HANDLER as an "active object" via multi-threading or
  51.     // multi-processing).
  52.     // = Demultiplexing hooks.
  53.     virtual int handleClose
  54. (
  55. REACTOR_HANDLE = INVALID_REACTOR_HANDLE,
  56. REACTOR_EVENT_MASK = EventHandler::ALL_EVENTS_MASK
  57. );
  58.   private:
  59.     PEER_CONNECTOR m_connector;
  60.     // This is the concrete connector factory (it keeps no state so the
  61.     // <Connector> is reentrant).
  62.     bool m_closing;
  63.     // unsupported
  64.     Connector (const Connector& other);
  65.     Connector& operator= (const Connector& rhs);
  66.     };
  67. #include "Connector.tcc" // template implementations
  68. #endif // __INCConnector_h