// This may look like C, but it's really -*- C++ -*- //============================================================================= /** * @file Acceptor_Impl.h * * $Id$ * * @author Carlos O'Ryan Ossama Othman */ //============================================================================= #ifndef TAO_ACCEPTOR_IMPL_H #define TAO_ACCEPTOR_IMPL_H #include "ace/pre.h" #include "ace/Acceptor.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ #include "tao/corbafwd.h" // Forward declarations. class TAO_ORB_Core; /** * @class TAO_Creation_Strategy * * @brief Creates a Svc_Handler and set the ORB_Core pointer on it. */ template class TAO_Creation_Strategy : public ACE_Creation_Strategy { public: /** * Constructor. parameter is used to pass any special * state/info to the service handler upon creation. Currently used * by IIOP and UIOP to pass protocol configuration properties. */ TAO_Creation_Strategy (TAO_ORB_Core *orb_core, void *arg = 0, CORBA::Boolean flag = 0); /// Create a SVC_HANDLER and set the ORB_Core pointer on it. int make_svc_handler (SVC_HANDLER *&sh); protected: /// Pointer to the ORB Core. TAO_ORB_Core *orb_core_; /// Some info/state to be passed to the service handler we create. void *arg_; /// Should we use the Lite version for any protocol? CORBA::Boolean lite_flag_; }; /** * @class TAO_Concurrency_Strategy * * @brief Activates the Svc_Handler, and then if specified by the * TAO_Server_Strategy_Factory, it activates the Svc_Handler to * run in its own thread. */ template class TAO_Concurrency_Strategy : public ACE_Concurrency_Strategy { public: /// Constructor. TAO_Concurrency_Strategy (TAO_ORB_Core *orb_core); /** * Activates the Svc_Handler, and then if specified by the * TAO_Server_Strategy_Factory, it activates the Svc_Handler to run * in its own thread. */ int activate_svc_handler (SVC_HANDLER *svc_handler, void *arg); protected: /// Pointer to the ORB Core. TAO_ORB_Core *orb_core_; }; template class TAO_Accept_Strategy : public ACE_Accept_Strategy { public: /// Constructor. TAO_Accept_Strategy (TAO_ORB_Core *orb_core); /// Initialize the with . If the /// process runs out of handles, purge some "old" connections. int open (const ACE_PEER_ACCEPTOR_ADDR &local_addr, int restart = 0); /// Delegates to the method of the PEER_ACCEPTOR. If the /// process runs out of handles, purge some "old" connections. int accept_svc_handler (SVC_HANDLER *svc_handler); protected: /// Base class. typedef ACE_Accept_Strategy ACCEPT_STRATEGY_BASE; /// Pointer to the ORB Core. TAO_ORB_Core *orb_core_; }; #if defined(__ACE_INLINE__) #include "tao/Acceptor_Impl.i" #endif /* __ACE_INLINE__ */ #if defined (ACE_TEMPLATES_REQUIRE_SOURCE) #include "tao/Acceptor_Impl.cpp" #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) #pragma implementation ("Acceptor_Impl.cpp") #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ #include "ace/post.h" #endif /* TAO_ACCEPTOR_IMPL_H */