#include <IIOP_Acceptor.h>
Public Types | |
typedef TAO_Strategy_Acceptor < TAO_IIOP_Connection_Handler, ACE_SOCK_ACCEPTOR > | BASE_ACCEPTOR |
typedef TAO_Creation_Strategy < TAO_IIOP_Connection_Handler > | CREATION_STRATEGY |
typedef TAO_Concurrency_Strategy < TAO_IIOP_Connection_Handler > | CONCURRENCY_STRATEGY |
typedef TAO_Accept_Strategy < TAO_IIOP_Connection_Handler, ACE_SOCK_ACCEPTOR > | ACCEPT_STRATEGY |
Public Member Functions | |
TAO_IIOP_Acceptor (void) | |
Constructor. | |
~TAO_IIOP_Acceptor (void) | |
Destructor. | |
const ACE_INET_Addr & | address (void) const |
const ACE_INET_Addr * | endpoints (void) |
Returns the array of endpoints in this acceptor. | |
const ACE_INET_Addr & | default_address (void) const |
Returns address for default endpoint. | |
void | set_default_address (const ACE_INET_Addr &addr) |
Set address for default endpoint. | |
virtual int | open (TAO_ORB_Core *orb_core, ACE_Reactor *reactor, int version_major, int version_minor, const char *address, const char *options=0) |
virtual int | open_default (TAO_ORB_Core *orb_core, ACE_Reactor *reactor, int version_major, int version_minor, const char *options=0) |
virtual int | close (void) |
Closes the acceptor. | |
virtual int | create_profile (const TAO::ObjectKey &object_key, TAO_MProfile &mprofile, CORBA::Short priority) |
virtual int | is_collocated (const TAO_Endpoint *endpoint) |
Return 1 if the endpoint has the same address as the acceptor. | |
virtual CORBA::ULong | endpoint_count (void) |
virtual int | object_key (IOP::TaggedProfile &profile, TAO::ObjectKey &key) |
virtual int | hostname (TAO_ORB_Core *orb_core, const ACE_INET_Addr &addr, char *&host, const char *specified_hostname=0) |
Protected Member Functions | |
int | parse_address (const char *address, ACE_INET_Addr &addr, ACE_CString &specified_hostname, int *def_type=0) |
int | dotted_decimal_address (const ACE_INET_Addr &addr, char *&host) |
virtual int | open_i (const ACE_INET_Addr &addr, ACE_Reactor *reactor) |
int | probe_interfaces (TAO_ORB_Core *orb_core, int def_type=AF_UNSPEC) |
int | parse_options (const char *options) |
virtual int | parse_options_i (int &argc, ACE_CString **argv) |
int | create_new_profile (const TAO::ObjectKey &object_key, TAO_MProfile &mprofile, CORBA::Short priority) |
int | create_shared_profile (const TAO::ObjectKey &object_key, TAO_MProfile &mprofile, CORBA::Short priority) |
Protected Attributes | |
ACE_INET_Addr * | addrs_ |
unsigned short | port_span_ |
char ** | hosts_ |
char * | hostname_in_ior_ |
CORBA::ULong | endpoint_count_ |
TAO_GIOP_Message_Version | version_ |
TAO_ORB_Core * | orb_core_ |
ORB Core. | |
int | reuse_addr_ |
Enable socket option SO_REUSEADDR to be set. | |
ACE_INET_Addr | default_address_ |
Address for default endpoint. | |
Private Member Functions | |
void | operator= (const TAO_IIOP_Acceptor &) |
TAO_IIOP_Acceptor (const TAO_IIOP_Acceptor &) | |
Private Attributes | |
BASE_ACCEPTOR | base_acceptor_ |
The concrete acceptor, as a pointer to it's base class. | |
CREATION_STRATEGY * | creation_strategy_ |
Acceptor strategies. | |
CONCURRENCY_STRATEGY * | concurrency_strategy_ |
ACCEPT_STRATEGY * | accept_strategy_ |
The IIOP-specific bridge class for the concrete acceptor.
typedef TAO_Accept_Strategy<TAO_IIOP_Connection_Handler, ACE_SOCK_ACCEPTOR> TAO_IIOP_Acceptor::ACCEPT_STRATEGY |
typedef TAO_Strategy_Acceptor<TAO_IIOP_Connection_Handler, ACE_SOCK_ACCEPTOR> TAO_IIOP_Acceptor::BASE_ACCEPTOR |
typedef TAO_Concurrency_Strategy<TAO_IIOP_Connection_Handler> TAO_IIOP_Acceptor::CONCURRENCY_STRATEGY |
TAO_IIOP_Acceptor::TAO_IIOP_Acceptor | ( | void | ) |
Constructor.
TAO_IIOP_Acceptor::~TAO_IIOP_Acceptor | ( | void | ) |
Destructor.
TAO_IIOP_Acceptor::TAO_IIOP_Acceptor | ( | const TAO_IIOP_Acceptor & | ) | [private] |
const ACE_INET_Addr & TAO_IIOP_Acceptor::address | ( | void | ) | const [inline] |
@ Helper method for the implementation repository, should go away
int TAO_IIOP_Acceptor::close | ( | void | ) | [virtual] |
Closes the acceptor.
Implements TAO_Acceptor.
int TAO_IIOP_Acceptor::create_new_profile | ( | const TAO::ObjectKey & | object_key, | |
TAO_MProfile & | mprofile, | |||
CORBA::Short | priority | |||
) | [protected] |
Helper method to add a new profile to the mprofile for each endpoint.
int TAO_IIOP_Acceptor::create_profile | ( | const TAO::ObjectKey & | object_key, | |
TAO_MProfile & | mprofile, | |||
CORBA::Short | priority | |||
) | [virtual] |
Create the corresponding profile for this endpoint. If share_profile is set to true, the pluggable protocol implementation should try to add the endpoint to a profile in the mprofile that is of the same type. Currently, this is used when RT CORBA is enabled.
Implements TAO_Acceptor.
int TAO_IIOP_Acceptor::create_shared_profile | ( | const TAO::ObjectKey & | object_key, | |
TAO_MProfile & | mprofile, | |||
CORBA::Short | priority | |||
) | [protected] |
Helper method to create a profile that contains all of our endpoints.
const ACE_INET_Addr & TAO_IIOP_Acceptor::default_address | ( | void | ) | const [inline] |
Returns address for default endpoint.
int TAO_IIOP_Acceptor::dotted_decimal_address | ( | const ACE_INET_Addr & | addr, | |
char *& | host | |||
) | [protected] |
Set the host name for the given address using the dotted decimal format.
CORBA::ULong TAO_IIOP_Acceptor::endpoint_count | ( | void | ) | [virtual] |
Returns the number of endpoints this acceptor is listening on. This is used for determining how many profiles will be generated for this acceptor.
Implements TAO_Acceptor.
const ACE_INET_Addr * TAO_IIOP_Acceptor::endpoints | ( | void | ) | [inline] |
Returns the array of endpoints in this acceptor.
int TAO_IIOP_Acceptor::hostname | ( | TAO_ORB_Core * | orb_core, | |
const ACE_INET_Addr & | addr, | |||
char *& | host, | |||
const char * | specified_hostname = 0 | |||
) | [virtual] |
Set the host name for the given addr. A hostname may be forced by using specified_hostname. This is useful if the given address corresponds to more than one hostname and the desired one cannot be determined in any other way. This method is used both when constructing IOR endpoints and LPL (listen point lists).
The algorithm used is:
int TAO_IIOP_Acceptor::is_collocated | ( | const TAO_Endpoint * | endpoint | ) | [virtual] |
Return 1 if the endpoint has the same address as the acceptor.
Implements TAO_Acceptor.
int TAO_IIOP_Acceptor::object_key | ( | IOP::TaggedProfile & | profile, | |
TAO::ObjectKey & | key | |||
) | [virtual] |
This method fetches the key from the profile. Protocols that are pluggable can send data that are specific in the profile_data
field encapsulated as a octet stream. This method allows those protocols to get the object key from the encapsulation.
Implements TAO_Acceptor.
int TAO_IIOP_Acceptor::open | ( | TAO_ORB_Core * | orb_core, | |
ACE_Reactor * | reactor, | |||
int | version_major, | |||
int | version_minor, | |||
const char * | address, | |||
const char * | options = 0 | |||
) | [virtual] |
The TAO_Acceptor methods, check the documentation in Transport_Acceptor.h for details.
Implements TAO_Acceptor.
int TAO_IIOP_Acceptor::open_default | ( | TAO_ORB_Core * | , | |
ACE_Reactor * | reactor, | |||
int | version_major, | |||
int | version_minor, | |||
const char * | options = 0 | |||
) | [virtual] |
Open an acceptor with the given protocol version on a default endpoint
Implements TAO_Acceptor.
int TAO_IIOP_Acceptor::open_i | ( | const ACE_INET_Addr & | addr, | |
ACE_Reactor * | reactor | |||
) | [protected, virtual] |
Implement the common part of the open*() methods. This method is virtual to allow a derived class implementation to be invoked instead.
void TAO_IIOP_Acceptor::operator= | ( | const TAO_IIOP_Acceptor & | ) | [private] |
int TAO_IIOP_Acceptor::parse_address | ( | const char * | address, | |
ACE_INET_Addr & | addr, | |||
ACE_CString & | specified_hostname, | |||
int * | def_type = 0 | |||
) | [protected] |
Helper method Clear out 'addr' & 'specified_hostname' and initialize them based upon 'address'. If a non-zero pointer is passed in for def_type, this will be set to AF_INET6 if IPv6 support is enabled and supplied hostname is either [] or [::]. It will be set to AF_INET if the hostname is 0.0.0.0, otherwise it is set to AF_UNSPEC. This value is then passed to probe_interfaces by open.
int TAO_IIOP_Acceptor::parse_options | ( | const char * | options | ) | [protected] |
Parse protocol specific options.
Currently supported: portspan -- specifies the range of ports over which the acceptor should scan looking for a free port (this is convenient for situations where you might normally use an ephemeral port but can't because you're behind a firewall and don't want to permit passage on all ephemeral ports)
int TAO_IIOP_Acceptor::parse_options_i | ( | int & | argc, | |
ACE_CString ** | argv | |||
) | [protected, virtual] |
Parse options splits the options list in to an argv array. This allows manipulation of the list in a manner similar to orb_init. By moving the consumed args to the tail of the list and reducing the argc count, the base parse_options_i can be called by derived parse_options_i. Method returns -1 if an ill-formed or otherwise bogus arg is encountered. The only strictly bogus arg was priority, which was a holdover from the early RT IIOP implementations. an ill-formed option is one which is missing an equal sign or something to the left of it.
int TAO_IIOP_Acceptor::probe_interfaces | ( | TAO_ORB_Core * | orb_core, | |
int | def_type = AF_UNSPEC | |||
) | [protected] |
Probe the system for available network interfaces, and initialize the <addrs_> array with an ACE_INET_Addr for each network interface. The port for each initialized ACE_INET_Addr will be set in the open_i() method. This method only gets invoked when no explicit hostname is provided in the specified endpoint.
The optional argument def_type is used to constrain the resulting list of interfaces to be either only IPv6 or IPv4, or both, when ACE_HAS_IPV6 is enabled and the source endpoint was an explicitly declared wildcard.
void TAO_IIOP_Acceptor::set_default_address | ( | const ACE_INET_Addr & | addr | ) | [inline] |
Set address for default endpoint.
ACE_INET_Addr* TAO_IIOP_Acceptor::addrs_ [protected] |
Array of ACE_INET_Addr instances, each one corresponding to a given network interface.
The concrete acceptor, as a pointer to it's base class.
Acceptor strategies.
ACE_INET_Addr TAO_IIOP_Acceptor::default_address_ [protected] |
Address for default endpoint.
CORBA::ULong TAO_IIOP_Acceptor::endpoint_count_ [protected] |
The number of host names cached in the hosts_ array (equivalent to the number of endpoints opened by this Acceptor).
char* TAO_IIOP_Acceptor::hostname_in_ior_ [protected] |
Override the hostname used in the ORBEndPoint.
char** TAO_IIOP_Acceptor::hosts_ [protected] |
Cache the information about the endpoints serviced by this acceptor. There may in fact be multiple hostnames for this endpoint. For example, if the IP address is INADDR_ANY (0.0.0.0) then there will be possibly a different hostname for each interface.
TAO_ORB_Core* TAO_IIOP_Acceptor::orb_core_ [protected] |
ORB Core.
unsigned short TAO_IIOP_Acceptor::port_span_ [protected] |
The number of ports over which the acceptor should search (starting at the port specified in each element of addrs_) for an available port. This is specified via the "portspan=" option to the endpoint.
int TAO_IIOP_Acceptor::reuse_addr_ [protected] |
Enable socket option SO_REUSEADDR to be set.
TAO_GIOP_Message_Version TAO_IIOP_Acceptor::version_ [protected] |
The GIOP version for this endpoint @ Theoretically they shouldn't be here!! We need to look at a way to move this out