Static Public Member Functions | Private Member Functions

TAO_Protocol_Properties_Factory Class Reference

#include <RT_Policy_i.h>

List of all members.

Static Public Member Functions

static
RTCORBA::ProtocolProperties
create_transport_protocol_property (IOP::ProfileId id, TAO_ORB_Core *orb_core)
static
RTCORBA::ProtocolProperties
create_orb_protocol_property (IOP::ProfileId id)

Private Member Functions

 TAO_Protocol_Properties_Factory (void)

Detailed Description

Definition at line 780 of file RT_Policy_i.h.


Constructor & Destructor Documentation

TAO_Protocol_Properties_Factory::TAO_Protocol_Properties_Factory ( void   )  [private]

Member Function Documentation

RTCORBA::ProtocolProperties * TAO_Protocol_Properties_Factory::create_orb_protocol_property ( IOP::ProfileId  id  )  [static]

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.

Definition at line 1290 of file RT_Policy_i.cpp.

{
  RTCORBA::ProtocolProperties* property = 0;

  if (id == IOP::TAG_INTERNET_IOP)
    ACE_NEW_RETURN (property,
                    TAO_GIOP_Protocol_Properties,
                    0);

  // Right now the only supported ORB protocol is GIOP
  // so we couple this with every protocol property.
  // The else statement is not necessary, but it
  // is here just to make clear that as soon as
  // new ORB protocol are supported other case
  // should be considered.
  else
    ACE_NEW_RETURN (property,
                    TAO_GIOP_Protocol_Properties,
                    0);
  return property;
}

RTCORBA::ProtocolProperties * TAO_Protocol_Properties_Factory::create_transport_protocol_property ( IOP::ProfileId  id,
TAO_ORB_Core orb_core 
) [static]

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.

Definition at line 1196 of file RT_Policy_i.cpp.

{
  RTCORBA::ProtocolProperties* property = 0;

  if (id == IOP::TAG_INTERNET_IOP)
    {
      int send_buffer_size = orb_core ? orb_core->orb_params ()->sock_sndbuf_size () : 0;
      int recv_buffer_size = orb_core ? orb_core->orb_params ()->sock_rcvbuf_size () : 0;
      int no_delay = orb_core ? orb_core->orb_params ()->nodelay () : 0;
      CORBA::Boolean keep_alive = orb_core ? orb_core->orb_params ()->sock_keepalive () : true;
      CORBA::Boolean dont_route = orb_core ? orb_core->orb_params ()->sock_dontroute () : false;
      CORBA::Boolean enable_network_priority = false;

      ACE_NEW_RETURN (property,
                      TAO_TCP_Protocol_Properties (send_buffer_size,
                                                   recv_buffer_size,
                                                   keep_alive,
                                                   dont_route,
                                                   no_delay,
                                                   enable_network_priority),
                      0);
    }

  else if (id == TAO_TAG_SHMEM_PROFILE)
    {
      int send_buffer_size = orb_core ? orb_core->orb_params ()->sock_sndbuf_size () : 0;
      int recv_buffer_size = orb_core ? orb_core->orb_params ()->sock_rcvbuf_size () : 0;
      int no_delay = orb_core ? orb_core->orb_params ()->nodelay () : 0;
      CORBA::Boolean keep_alive = true;
      CORBA::Boolean dont_route = false;
      CORBA::Long preallocate_buffer_size = false;
      const char *mmap_filename = "";
      const char *mmap_lockname = "";

      ACE_NEW_RETURN (property,
                      TAO_SharedMemory_Protocol_Properties (send_buffer_size,
                                                            recv_buffer_size,
                                                            keep_alive,
                                                            dont_route,
                                                            no_delay,
                                                            preallocate_buffer_size,
                                                            mmap_filename,
                                                            mmap_lockname),
                      0);
    }

  else if (id == TAO_TAG_UIOP_PROFILE)
    {
      int const send_buffer_size = orb_core ? orb_core->orb_params ()->sock_sndbuf_size () : 0;
      int const recv_buffer_size = orb_core ? orb_core->orb_params ()->sock_rcvbuf_size () : 0;

      ACE_NEW_RETURN (property,
                      TAO_UnixDomain_Protocol_Properties (send_buffer_size,
                                                          recv_buffer_size),
                      0);
    }

  else if (id == TAO_TAG_DIOP_PROFILE)
    {
      int const send_buffer_size = orb_core ? orb_core->orb_params ()->sock_sndbuf_size () : 0;
      int const recv_buffer_size = orb_core ? orb_core->orb_params ()->sock_rcvbuf_size () : 0;
      CORBA::Boolean enable_network_priority = false;

      ACE_NEW_RETURN (property,
                      TAO_UserDatagram_Protocol_Properties (send_buffer_size,
                                                            recv_buffer_size,
                                                            enable_network_priority),
                      0);
    }

  else if (id == TAO_TAG_SCIOP_PROFILE)
    {
      int send_buffer_size = orb_core ? orb_core->orb_params ()->sock_sndbuf_size () : 0;
      int recv_buffer_size = orb_core ? orb_core->orb_params ()->sock_rcvbuf_size () : 0;
      int no_delay = orb_core ? orb_core->orb_params ()->nodelay () : 0;
      CORBA::Boolean keep_alive = true;
      CORBA::Boolean dont_route = false;
      CORBA::Boolean enable_network_priority = false;

      ACE_NEW_RETURN (property,
                      TAO_StreamControl_Protocol_Properties (send_buffer_size,
                                                             recv_buffer_size,
                                                             keep_alive,
                                                             dont_route,
                                                             no_delay,
                                                             enable_network_priority),
                      0);
    }

  return property;
}


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines