/* -*- C++ -*- */ //============================================================================= /** * @file RT_Policy_i.h * * @author Marina Spivak (marina@cs.wustl.edu) */ //============================================================================= #ifndef TAO_RT_POLICY_I_H #define TAO_RT_POLICY_I_H #include /**/ "ace/pre.h" #include "tao/orbconf.h" #if defined (TAO_HAS_CORBA_MESSAGING) && TAO_HAS_CORBA_MESSAGING != 0 #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ #include "tao/RTCORBA/RTCORBA_includeC.h" #include "tao/LocalObject.h" #include "tao/Basic_Types.h" #include "ace/SString.h" #if defined(_MSC_VER) #pragma warning(push) #pragma warning(disable:4250) #endif /* _MSC_VER */ TAO_BEGIN_VERSIONED_NAMESPACE_DECL /** * @class TAO_PriorityModelPolicy * * @brief RTCORBA::PriorityModelPolicy implementation * * This policy controls how the priority at which a server handles * requests from clients is determined. */ class TAO_RTCORBA_Export TAO_PriorityModelPolicy : public RTCORBA::PriorityModelPolicy, public ::CORBA::LocalObject { public: /// Constructor. TAO_PriorityModelPolicy (RTCORBA::PriorityModel priority_model, RTCORBA::Priority server_priority); /// Copy constructor. TAO_PriorityModelPolicy (const TAO_PriorityModelPolicy &rhs); /** * Accessor for the attribute. This method is * used internally by the orb. This is a more efficient * (non-virtual, no exception handling) relative of the idl interface * implementation below. */ RTCORBA::PriorityModel get_priority_model (); RTCORBA::PriorityModel priority_model (); RTCORBA::Priority server_priority (); CORBA::PolicyType policy_type (); CORBA::Policy_ptr copy (); void destroy (); /// This method writes a CDR representation of the object state. CORBA::Boolean _tao_encode (TAO_OutputCDR &out_cdr); /// This method reads the object state from a CDR representation. CORBA::Boolean _tao_decode (TAO_InputCDR &in_cdr); // Return the cached policy type for this policy. TAO_Cached_Policy_Type _tao_cached_type () const; // Returns the scope at which this policy can be applied. See orbconf.h. TAO_Policy_Scope _tao_scope () const; /// Helper method for the implementation of /// CORBA::ORB::create_policy. static CORBA::Policy_ptr create (const CORBA::Any &val); protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. virtual ~TAO_PriorityModelPolicy (); /// This constructor is used by TAO_RT_PolicyFactory when decoding /// policies from tagged components in an IOR. friend class TAO_RT_PolicyFactory; TAO_PriorityModelPolicy (); private: /// Attributes. RTCORBA::PriorityModel priority_model_; RTCORBA::Priority server_priority_; }; //************************************************************************* /** * @class TAO_ThreadpoolPolicy * * @brief RTCORBA::ThreadpoolPolicy implementation * * This policy controls which threadpool is associated with a POA. */ class TAO_RTCORBA_Export TAO_ThreadpoolPolicy : public RTCORBA::ThreadpoolPolicy, public ::CORBA::LocalObject { public: /// Constructor. TAO_ThreadpoolPolicy (RTCORBA::ThreadpoolId id); /// Copy constructor. TAO_ThreadpoolPolicy (const TAO_ThreadpoolPolicy &rhs); RTCORBA::ThreadpoolId threadpool (); CORBA::PolicyType policy_type (); CORBA::Policy_ptr copy (); void destroy (); // Return the cached policy type for this policy. TAO_Cached_Policy_Type _tao_cached_type () const; // Returns the scope at which this policy can be applied. See orbconf.h. TAO_Policy_Scope _tao_scope () const; /// Helper method for the implementation of /// CORBA::ORB::create_policy. static CORBA::Policy_ptr create (const CORBA::Any &val); protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. virtual ~TAO_ThreadpoolPolicy (); private: /// Attribute. RTCORBA::ThreadpoolId id_; }; //************************************************************************* /** * @class TAO_PrivateConnectionPolicy * * @brief RTCORBA::PrivateConnectionPolicy implementation * * This policy controls whether the transport connection for the * Object is private, i.e., not available for carrying out invocations on * other objects. */ class TAO_RTCORBA_Export TAO_PrivateConnectionPolicy : public RTCORBA::PrivateConnectionPolicy, public ::CORBA::LocalObject { public: /// Constructor. TAO_PrivateConnectionPolicy (); /// Copy constructor. TAO_PrivateConnectionPolicy (const TAO_PrivateConnectionPolicy &rhs); CORBA::PolicyType policy_type (); CORBA::Policy_ptr copy (); void destroy (); // Return the cached policy type for this policy. TAO_Cached_Policy_Type _tao_cached_type () const; // Returns the scope at which this policy can be applied. See orbconf.h. TAO_Policy_Scope _tao_scope () const; /// Helper method for the implementation of /// CORBA::ORB::create_policy. static CORBA::Policy_ptr create (const CORBA::Any &val); protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. virtual ~TAO_PrivateConnectionPolicy (); }; //************************************************************************* /** * @class TAO_PriorityBandedConnectionPolicy * * @brief RTCORBA::PriorityBandedConnectionPolicy implementation * * RT CORBA provides facility for a client to communicate with a * server via multiple connections, aka bands, with each connection handling * invocations that are made at a different CORBA priority. * This policy allows the specification of the number of such * bands and their priorities. */ class TAO_RTCORBA_Export TAO_PriorityBandedConnectionPolicy : public RTCORBA::PriorityBandedConnectionPolicy, public ::CORBA::LocalObject { public: /// Constructor. TAO_PriorityBandedConnectionPolicy (const RTCORBA::PriorityBands &bands); /// Copy constructor. TAO_PriorityBandedConnectionPolicy (const TAO_PriorityBandedConnectionPolicy &rhs); /** * Accessor to the underlying priority bands of the policy (does not * make a copy like the idl accessor implementation * below.) */ RTCORBA::PriorityBands &priority_bands_rep (); RTCORBA::PriorityBands *priority_bands (); CORBA::PolicyType policy_type (); CORBA::Policy_ptr copy (); void destroy (); /// This method writes a CDR representation of the current object. CORBA::Boolean _tao_encode (TAO_OutputCDR &out_cdr); /// This method reads the object state from a CDR representation. CORBA::Boolean _tao_decode (TAO_InputCDR &in_cdr); // Return the cached policy type for this policy. TAO_Cached_Policy_Type _tao_cached_type () const; // Returns the scope at which this policy can be applied. See orbconf.h. TAO_Policy_Scope _tao_scope () const; /// Helper method for the implementation of /// CORBA::ORB::create_policy. static CORBA::Policy_ptr create (const CORBA::Any &val); protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. virtual ~TAO_PriorityBandedConnectionPolicy (); /// This constructor is used by TAO_RT_PolicyFactory when decoding /// policies from tagged components in an IOR. friend class TAO_RT_PolicyFactory; TAO_PriorityBandedConnectionPolicy (); private: /// Attribute. RTCORBA::PriorityBands priority_bands_; }; //************************************************************************* /** * @class TAO_ServerProtocolPolicy * * @brief RTCORBA::ServerProtocolPolicy implementation * * This policy controls selection and configuration of * communication protocols on the server-side of the RT ORB. */ class TAO_RTCORBA_Export TAO_ServerProtocolPolicy : public RTCORBA::ServerProtocolPolicy, public ::CORBA::LocalObject { public: /// Constructor. TAO_ServerProtocolPolicy (const RTCORBA::ProtocolList &protocols); /// Copy constructor. TAO_ServerProtocolPolicy (const TAO_ServerProtocolPolicy &rhs); /** * Accessor to the underlying protocols list of the policy (does not * make a copy like the idl accessor implementation * below.) */ RTCORBA::ProtocolList & protocols_rep (); RTCORBA::ProtocolList *protocols (); CORBA::PolicyType policy_type (); CORBA::Policy_ptr copy (); void destroy (); // Return the cached policy type for this policy. TAO_Cached_Policy_Type _tao_cached_type () const; // Returns the scope at which this policy can be applied. See orbconf.h. TAO_Policy_Scope _tao_scope () const; /// Helper method for the implementation of /// CORBA::ORB::create_policy. static CORBA::Policy_ptr create (const CORBA::Any &val); protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. virtual ~TAO_ServerProtocolPolicy (); private: /// Attribute. RTCORBA::ProtocolList protocols_; }; //************************************************************************* /** * @class TAO_ClientProtocolPolicy * * @brief RTCORBA::ClientProtocolPolicy implementation * * This policy controls selection and configuration of * communication protocols on the client-side of the RT ORB. */ class TAO_RTCORBA_Export TAO_ClientProtocolPolicy : public RTCORBA::ClientProtocolPolicy, public ::CORBA::LocalObject { public: /// Constructor. TAO_ClientProtocolPolicy (const RTCORBA::ProtocolList &protocols); /// Copy constructor. TAO_ClientProtocolPolicy (const TAO_ClientProtocolPolicy &rhs); /** * Accessor to the underlying protocols list of the policy (does not * make a copy like the idl accessor implementation * below.) */ RTCORBA::ProtocolList & protocols_rep (); RTCORBA::ProtocolList *protocols (); CORBA::PolicyType policy_type (); CORBA::Policy_ptr copy (); void destroy (); // = CDR Encoder/Decoder. /// This method writes a CDR representation of the current object. CORBA::Boolean _tao_encode (TAO_OutputCDR &out_cdr); /// This method reads the object state from a CDR representation. CORBA::Boolean _tao_decode (TAO_InputCDR &in_cdr); // Return the cached policy type for this policy. TAO_Cached_Policy_Type _tao_cached_type () const; // Returns the scope at which this policy can be applied. See orbconf.h. TAO_Policy_Scope _tao_scope () const; /// Helper method for the implementation of /// CORBA::ORB::create_policy. static CORBA::Policy_ptr create (const CORBA::Any &val); protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. virtual ~TAO_ClientProtocolPolicy (); /// This constructor is used by TAO_RT_PolicyFactory when decoding /// policies from tagged components in an IOR. friend class TAO_RT_PolicyFactory; TAO_ClientProtocolPolicy (); private: /// Attribute. RTCORBA::ProtocolList protocols_; }; //************************************************************************* /** * @class TAO_TCP_Protocol_Properties * * @brief RTCORBA::TCPProtocolProperties implementation * * Stores TCP Protocol configuration properties. */ class TAO_RTCORBA_Export TAO_TCP_Protocol_Properties : public RTCORBA::TCPProtocolProperties, public ::CORBA::LocalObject { public: /// Constructor. TAO_TCP_Protocol_Properties (CORBA::Long send_buffer_size, CORBA::Long recv_buffer_size, CORBA::Boolean keep_alive, CORBA::Boolean dont_route, CORBA::Boolean no_delay, CORBA::Boolean enable_network_priority); CORBA::Long send_buffer_size (); void send_buffer_size (CORBA::Long send_buffer_size); CORBA::Long recv_buffer_size (); void recv_buffer_size (CORBA::Long recv_buffer_size); CORBA::Boolean keep_alive (); void keep_alive (CORBA::Boolean keep_alive); CORBA::Boolean dont_route (); void dont_route (CORBA::Boolean dont_route); CORBA::Boolean no_delay (); void no_delay (CORBA::Boolean no_delay); CORBA::Boolean enable_network_priority (); void enable_network_priority (CORBA::Boolean enable); /// This method writes a CDR representation of TCPProtocolProperties. CORBA::Boolean _tao_encode (TAO_OutputCDR &out_cdr); /// This method reads the object state from a CDR representation. CORBA::Boolean _tao_decode (TAO_InputCDR &in_cdr); protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. virtual ~TAO_TCP_Protocol_Properties (); private: // = Attributes. CORBA::Long send_buffer_size_; CORBA::Long recv_buffer_size_; CORBA::Boolean keep_alive_; CORBA::Boolean dont_route_; CORBA::Boolean no_delay_; CORBA::Boolean enable_network_priority_; }; //************************************************************************* /** * @class TAO_UnixDomain_Protocol_Properties * * @brief RTCORBA::UnixDomainProtocolProperties implementation. * * Stores Unix Domain Sockets (Local IPC) Protocol configuration * properties. */ class TAO_RTCORBA_Export TAO_UnixDomain_Protocol_Properties : public RTCORBA::UnixDomainProtocolProperties, public ::CORBA::LocalObject { public: /// Constructor TAO_UnixDomain_Protocol_Properties (CORBA::Long send_buffer_size, CORBA::Long recv_buffer_size); CORBA::Long send_buffer_size (); void send_buffer_size (CORBA::Long send_buffer_size); CORBA::Long recv_buffer_size (); void recv_buffer_size (CORBA::Long recv_buffer_size); /** * This method writes the CDR encapsulation of an instance of * UnixDomainProperties. This Protocol Property in TAO specific, * so there is no order of encapsulation specified in the * RT CORBA Spec. The current implementation encodes the field * according to the order of declaration (i.e. first is encoded * send_buffer_size and then recv_buffer_size). */ CORBA::Boolean _tao_encode (TAO_OutputCDR &out_cdr); /** * This method reads an instance of UnixDomainProperties from * a CDR encapsulation. This Protocol Property in TAO specific, * so there is no order of encapsulation specified in the * RT CORBA Spec. The current implementation expect the field * according to the order of declaration. */ CORBA::Boolean _tao_decode (TAO_InputCDR &in_cdr); protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. virtual ~TAO_UnixDomain_Protocol_Properties (); private: // = Attributes. CORBA::Long send_buffer_size_; CORBA::Long recv_buffer_size_; }; //************************************************************************* /** * @class TAO_SharedMemory_Protocol_Properties * * @brief RTCORBA::SharedMemoryProtocolProperties implementation. * * Stores Shared Memory Protocol configuration * properties. */ class TAO_RTCORBA_Export TAO_SharedMemory_Protocol_Properties : public RTCORBA::SharedMemoryProtocolProperties, public ::CORBA::LocalObject { public: /// Constructor. TAO_SharedMemory_Protocol_Properties (CORBA::Long send_buffer_size, CORBA::Long recv_buffer_size, CORBA::Boolean keep_alive, CORBA::Boolean dont_route, CORBA::Boolean no_delay, CORBA::Long preallocate_buffer_size, const char *mmap_filename, const char *mmap_lockname); // = IDL interface methods. CORBA::Long send_buffer_size (); void send_buffer_size (CORBA::Long send_buffer_size); CORBA::Long recv_buffer_size (); void recv_buffer_size (CORBA::Long recv_buffer_size); CORBA::Boolean keep_alive (); void keep_alive (CORBA::Boolean keep_alive); CORBA::Boolean dont_route (); void dont_route (CORBA::Boolean dont_route); CORBA::Boolean no_delay (); void no_delay (CORBA::Boolean no_delay); CORBA::Boolean enable_network_priority (); CORBA::Long preallocate_buffer_size (); void preallocate_buffer_size (CORBA::Long preallocate_buffer_size); char *mmap_filename (); void mmap_filename (const char *mmap_filename); char *mmap_lockname (); void mmap_lockname (const char *mmap_lockname); /** * This method writes the CDR encapsulation of an instance of * SharedMemoryProperties. This Protocol Property in TAO specific, * so there is no order of encapsulation specified in the * RT CORBA Spec. The current implementation encodes the field * according to the order of declaration. */ CORBA::Boolean _tao_encode (TAO_OutputCDR &out_cdr); /** * This method reads an instance of SharedMemoryProperties from * a CDR encapsulation. This Protocol Property in TAO specific, * so there is no order of encapsulation specified in the * RT CORBA Spec. The current implementation expect the field * according to the order of declaration. */ CORBA::Boolean _tao_decode (TAO_InputCDR &in_cdr); protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. virtual ~TAO_SharedMemory_Protocol_Properties (); private: // = Attributes. CORBA::Long send_buffer_size_; CORBA::Long recv_buffer_size_; CORBA::Boolean keep_alive_; CORBA::Boolean dont_route_; CORBA::Boolean no_delay_; CORBA::Long preallocate_buffer_size_; ACE_CString mmap_filename_; ACE_CString mmap_lockname_; }; //************************************************************************* /** * @class TAO_UserDatagram_Protocol_Properties * * @brief RTCORBA::UserDatagramProtocolProperties implementation * * Stores UserDatagram Protocol configuration properties. */ class TAO_RTCORBA_Export TAO_UserDatagram_Protocol_Properties : public RTCORBA::UserDatagramProtocolProperties, public ::CORBA::LocalObject { public: /// Constructor. TAO_UserDatagram_Protocol_Properties (CORBA::Long send_buffer_size, CORBA::Long recv_buffer_size, CORBA::Boolean enable_network_priority); CORBA::Boolean enable_network_priority (); void enable_network_priority (CORBA::Boolean enable); CORBA::Long send_buffer_size (); void send_buffer_size (CORBA::Long send_buffer_size); CORBA::Long recv_buffer_size (); void recv_buffer_size (CORBA::Long recv_buffer_size); /// This method writes a CDR representation of UserDatagramProtocolProperties. CORBA::Boolean _tao_encode (TAO_OutputCDR &out_cdr); /// This method reads the object state from a CDR representation. CORBA::Boolean _tao_decode (TAO_InputCDR &in_cdr); protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. virtual ~TAO_UserDatagram_Protocol_Properties (); private: // = Attributes. CORBA::Long send_buffer_size_; CORBA::Long recv_buffer_size_; CORBA::Boolean enable_network_priority_; }; //************************************************************************* /** * @class TAO_StreamControl_Protocol_Properties * * @brief RTCORBA::StreamControlProtocolProperties implementation * * Stores StreamControl Protocol configuration properties. */ class TAO_RTCORBA_Export TAO_StreamControl_Protocol_Properties : public RTCORBA::StreamControlProtocolProperties, public ::CORBA::LocalObject { public: /// Constructor. TAO_StreamControl_Protocol_Properties (CORBA::Long send_buffer_size, CORBA::Long recv_buffer_size, CORBA::Boolean keep_alive, CORBA::Boolean dont_route, CORBA::Boolean no_delay, CORBA::Boolean enable_network_priority); CORBA::Long send_buffer_size (); void send_buffer_size (CORBA::Long send_buffer_size); CORBA::Long recv_buffer_size (); void recv_buffer_size (CORBA::Long recv_buffer_size); CORBA::Boolean keep_alive (); void keep_alive (CORBA::Boolean keep_alive); CORBA::Boolean dont_route (); void dont_route (CORBA::Boolean dont_route); CORBA::Boolean no_delay (); void no_delay (CORBA::Boolean no_delay); CORBA::Boolean enable_network_priority (); void enable_network_priority (CORBA::Boolean enable); /// This method writes a CDR representation of StreamControlProtocolProperties. CORBA::Boolean _tao_encode (TAO_OutputCDR &out_cdr); /// This method reads the object state from a CDR representation. CORBA::Boolean _tao_decode (TAO_InputCDR &in_cdr); protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. virtual ~TAO_StreamControl_Protocol_Properties (); private: // = Attributes. CORBA::Long send_buffer_size_; CORBA::Long recv_buffer_size_; CORBA::Boolean keep_alive_; CORBA::Boolean dont_route_; CORBA::Boolean no_delay_; CORBA::Boolean enable_network_priority_; }; //************************************************************************* class TAO_RTCORBA_Export TAO_GIOP_Protocol_Properties : public RTCORBA::GIOPProtocolProperties, public ::CORBA::LocalObject { public: // = CDR encoding methods CORBA::Boolean _tao_encode (TAO_OutputCDR &out_cdr); CORBA::Boolean _tao_decode (TAO_InputCDR &in_cdr); protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. virtual ~TAO_GIOP_Protocol_Properties (); friend class TAO_Protocol_Properties_Factory; TAO_GIOP_Protocol_Properties (); }; //************************************************************************* class TAO_RTCORBA_Export TAO_Protocol_Properties_Factory { public: /** * Creates the proper transport ProtocolProperties subclass that matches * the IOP::ProfileId. * NOTE: Each IOP::ProfileId corresponds to two sets of protocol * properties: one describes the transport protocol and the other * describes the ORB messaging protocol. */ static RTCORBA::ProtocolProperties *create_transport_protocol_property ( IOP::ProfileId id, TAO_ORB_Core *orb_core); /** * Creates the proper orb ProtocolProperties subclass for * IOP::ProfileId. * NOTE: Each IOP::ProfileId corresponds to two sets of protocol * properties: one describes the transport protocol and the other * describes the ORB messaging protocol. */ static RTCORBA::ProtocolProperties *create_orb_protocol_property (IOP::ProfileId id); private: TAO_Protocol_Properties_Factory (); }; TAO_END_VERSIONED_NAMESPACE_DECL #if defined(_MSC_VER) #pragma warning(pop) #endif /* _MSC_VER */ #endif /* TAO_HAS_CORBA_MESSAGING && TAO_HAS_CORBA_MESSAGING != 0 */ #include /**/ "ace/post.h" #endif /* TAO_RT_POLICY_I_H */