diff options
Diffstat (limited to 'TAO/tao/default_client.h')
-rw-r--r-- | TAO/tao/default_client.h | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/TAO/tao/default_client.h b/TAO/tao/default_client.h new file mode 100644 index 00000000000..7adaf0a6e53 --- /dev/null +++ b/TAO/tao/default_client.h @@ -0,0 +1,120 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file default_client.h + * + * $Id$ + * + * @author Chris Cleeland + */ +//============================================================================= + + +#ifndef TAO_DEFAULT_CLIENT_H +#define TAO_DEFAULT_CLIENT_H + +#include /**/ "ace/pre.h" +#include "ace/Service_Config.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/Client_Strategy_Factory.h" + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +/** + * @class TAO_Default_Client_Strategy_Factory + * + * @brief This is the "default" client strategy factor for TAO. It + * includes strategies that are configured through command-line + * options so that everything operates as if there were no + * dynamically-linkable strategies. + */ +class TAO_Export TAO_Default_Client_Strategy_Factory + : public TAO_Client_Strategy_Factory +{ +public: + // = Initialization and termination methods. + /// Constructor. + TAO_Default_Client_Strategy_Factory (void); + + /// Destructor. + virtual ~TAO_Default_Client_Strategy_Factory (void); + + // = Service Configurator hooks. + /// Dynamic linking hook + virtual int init (int argc, ACE_TCHAR* argv[]); + + /// Parse svc.conf arguments + int parse_args (int argc, ACE_TCHAR* argv[]); + + // = Check Client_Strategy_Factory.h for the documentation of the + // following methods. + virtual ACE_Lock* create_profile_lock (void); + virtual TAO_Configurable_Refcount create_profile_refcount (void); + virtual TAO_Transport_Mux_Strategy *create_transport_mux_strategy (TAO_Transport *transport); + virtual ACE_Lock *create_transport_mux_strategy_lock (void); + virtual int reply_dispatcher_table_size (void) const; + virtual int allow_callback (void); + virtual TAO_Wait_Strategy *create_wait_strategy (TAO_Transport *transport); + virtual TAO_Connect_Strategy *create_connect_strategy (TAO_ORB_Core *); + virtual bool use_cleanup_options (void) const; + virtual Connect_Strategy connect_strategy (void) const; + +protected: + void report_option_value_error (const ACE_TCHAR* option_name, + const ACE_TCHAR* option_value); + +private: + enum Lock_Type + { + TAO_NULL_LOCK, + TAO_THREAD_LOCK + }; + + /// the lock type for forwarding IIOP Profile + Lock_Type profile_lock_type_; + + enum Transport_Mux_Strategy + { + TAO_MUXED_TMS, + TAO_EXCLUSIVE_TMS + }; + + /// The client Request Mux Strategy. + Transport_Mux_Strategy transport_mux_strategy_; + + enum Wait_Strategy + { + TAO_WAIT_ON_LEADER_FOLLOWER, + TAO_WAIT_ON_REACTOR, + TAO_WAIT_ON_READ, + TAO_WAIT_ON_LF_NO_UPCALL + }; + + /// The wait-for-reply strategy. + Wait_Strategy wait_strategy_; + + /// The connection initiation strategy. + Connect_Strategy connect_strategy_; + + /// Size of the reply dispatcher table + int rd_table_size_; + + /// Type of lock for the muxed_strategy + Lock_Type muxed_strategy_lock_type_; + + /// Cleanupoptions for RW strategy + bool use_cleanup_options_; +}; + +TAO_END_VERSIONED_NAMESPACE_DECL + +ACE_STATIC_SVC_DECLARE_EXPORT (TAO, TAO_Default_Client_Strategy_Factory) +ACE_FACTORY_DECLARE (TAO, TAO_Default_Client_Strategy_Factory) + +#include /**/ "ace/post.h" +#endif /* TAO_DEFAULT_CLIENT_H */ |