#include <Transport.h>
Public Member Functions | |
TAO_AV_Acceptor_Registry (void) | |
~TAO_AV_Acceptor_Registry (void) | |
int | open (TAO_Base_StreamEndPoint *endpoint, TAO_AV_Core *av_core, TAO_AV_FlowSpecSet &flow_spec_set) |
int | close (TAO_AV_Acceptor *acceptor) |
int | close_all (void) |
TAO_AV_AcceptorSetItor | begin (void) |
TAO_AV_AcceptorSetItor | end (void) |
Protected Member Functions | |
int | open_default (TAO_Base_StreamEndPoint *endpoint, TAO_AV_Core *av_core, TAO_FlowSpec_Entry *entry) |
Protected Attributes | |
TAO_AV_AcceptorSet | acceptors_ |
Definition at line 302 of file Transport.h.
TAO_AV_Acceptor_Registry::TAO_AV_Acceptor_Registry | ( | void | ) |
Definition at line 204 of file Transport.cpp.
{ }
TAO_AV_Acceptor_Registry::~TAO_AV_Acceptor_Registry | ( | void | ) |
Definition at line 208 of file Transport.cpp.
{ this->close_all(); }
TAO_AV_AcceptorSetItor TAO_AV_Acceptor_Registry::begin | ( | void | ) |
Definition at line 79 of file Transport.inl.
{ return this->acceptors_.begin (); }
int TAO_AV_Acceptor_Registry::close | ( | TAO_AV_Acceptor * | acceptor | ) |
Definition at line 437 of file Transport.cpp.
{ this->acceptors_.remove (acceptor); delete acceptor; return 0; }
int TAO_AV_Acceptor_Registry::close_all | ( | void | ) |
Definition at line 446 of file Transport.cpp.
{ for (TAO_AV_AcceptorSetItor i = this->acceptors_.begin (); i != this->acceptors_.end (); ++i) { if (*i == 0) continue; (*i)->close (); delete *i; } this->acceptors_.reset (); return 0; }
TAO_AV_AcceptorSetItor TAO_AV_Acceptor_Registry::end | ( | void | ) |
Definition at line 86 of file Transport.inl.
{ return this->acceptors_.end (); }
int TAO_AV_Acceptor_Registry::open | ( | TAO_Base_StreamEndPoint * | endpoint, | |
TAO_AV_Core * | av_core, | |||
TAO_AV_FlowSpecSet & | flow_spec_set | |||
) |
Definition at line 214 of file Transport.cpp.
{ int retv = 0; if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG, "TAO_AV_Acceptor_Registry::open\n")); TAO_AV_FlowSpecSetItor last_flowspec = flow_spec_set.end (); for (TAO_AV_FlowSpecSetItor flow_spec = flow_spec_set.begin (); flow_spec != last_flowspec; ++flow_spec) { TAO_FlowSpec_Entry *entry = (*flow_spec); ACE_Addr *address = entry->address (); const char *flow_protocol = entry->flow_protocol_str (); const char *transport_protocol = entry->carrier_protocol_str (); if (ACE_OS::strcmp (flow_protocol,"") == 0) flow_protocol = transport_protocol; if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG, "TAO_AV_Acceptor_Registry::protocol for flow %s is %s\n", entry->flowname (), transport_protocol)); if (address == 0) { retv = this->open_default (endpoint, av_core, entry); if(retv < 0) return retv; continue; } else { TAO_AV_Flow_Protocol_Factory *flow_factory = av_core->get_flow_protocol_factory (flow_protocol); if (flow_protocol != 0) { TAO_AV_Transport_Factory *transport_factory = av_core->get_transport_factory (transport_protocol); if (transport_protocol != 0) { TAO_AV_Acceptor *acceptor = transport_factory->make_acceptor (); if (acceptor != 0) { // add acceptor to list. this->acceptors_.insert (acceptor); if (acceptor->open (endpoint, av_core, entry, flow_factory, TAO_AV_Core::TAO_AV_DATA) == -1) return -1; TAO_AV_Flow_Protocol_Factory *control_flow_factory = av_core->get_flow_protocol_factory (flow_factory->control_flow_factory ()); if (control_flow_factory != 0) { TAO_AV_Acceptor *acceptor = transport_factory->make_acceptor (); if (acceptor != 0) { if (acceptor->open (endpoint, av_core, entry, control_flow_factory, TAO_AV_Core::TAO_AV_CONTROL) == -1) return -1; // add acceptor to list. this->acceptors_.insert (acceptor); entry->protocol_object ()->control_object (entry->control_protocol_object ()); } else ACE_ERROR_RETURN ((LM_ERROR, "(%P|%t) Unable to create an " "acceptor for <%s>\n", entry->flowname ()), -1); } } else ACE_ERROR_RETURN ((LM_ERROR, "(%P|%t) Unable to create an " "acceptor for <%s>\n", entry->flowname ()), -1); } } } } return 0; }
int TAO_AV_Acceptor_Registry::open_default | ( | TAO_Base_StreamEndPoint * | endpoint, | |
TAO_AV_Core * | av_core, | |||
TAO_FlowSpec_Entry * | entry | |||
) | [protected] |
Definition at line 320 of file Transport.cpp.
{ if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG, "TAO_AV_Acceptor_Registry::open_default ")); // No endpoints were specified, we let each protocol pick its own // default... const char *flow_protocol = entry->flow_protocol_str (); const char *transport_protocol = entry->carrier_protocol_str (); if (ACE_OS::strcmp (flow_protocol,"") == 0) flow_protocol = transport_protocol; TAO_AV_Flow_Protocol_Factory *flow_factory = av_core->get_flow_protocol_factory (flow_protocol); // No matching flow protocol. if (flow_factory == 0) ACE_ERROR_RETURN ((LM_ERROR, "TAO (%P|%t) (%N,%l) Unable to match protocol prefix " "for <%s>\n", flow_protocol), -1); if (TAO_debug_level > 0) ACE_DEBUG((LM_DEBUG, "(%N,%l) Matched flow_protocol: %s, Looking for transport protocol: %s\n", flow_protocol, transport_protocol)); TAO_AV_Transport_Factory *transport_factory = av_core->get_transport_factory (transport_protocol); if (transport_factory == 0) ACE_ERROR_RETURN ((LM_ERROR, "TAO (%P|%t) (%N,%l) Unable to match protocol prefix " "for <%s>\n", transport_protocol), -1); // make an acceptor TAO_AV_Acceptor *acceptor = transport_factory->make_acceptor(); if (acceptor == 0) ACE_ERROR_RETURN ((LM_ERROR, "TAO (%P|%t) unable to create " "an acceptor for <%d>\n", transport_protocol), -1); if (acceptor->open_default (endpoint, av_core, entry, flow_factory, TAO_AV_Core::TAO_AV_DATA) == -1) ACE_ERROR_RETURN ((LM_ERROR, "TAO (%P|%t) unable to open " "default acceptor for <%s>%p\n", flow_protocol), -1); this->acceptors_.insert (acceptor); const char *control_flow_factory_name = flow_factory->control_flow_factory (); if (control_flow_factory_name != 0) { TAO_AV_Flow_Protocol_Factory *control_flow_factory = av_core->get_flow_protocol_factory (control_flow_factory_name); if (control_flow_factory == 0) ACE_ERROR_RETURN ((LM_ERROR, "TAO (%P|%t) Unable to match control flow " "for <%s>\n", control_flow_factory_name), -1); TAO_AV_Acceptor *control_acceptor = transport_factory->make_acceptor (); if (control_acceptor == 0) ACE_ERROR_RETURN ((LM_ERROR, "TAO (%P|%t) unable to create " "an acceptor for <%d>\n", transport_protocol), -1); if (control_acceptor->open_default (endpoint, av_core, entry, control_flow_factory, TAO_AV_Core::TAO_AV_CONTROL) == -1) ACE_ERROR_RETURN ((LM_ERROR, "TAO (%P|%t) unable to open " "default acceptor for <%s>%p\n", transport_protocol), -1); this->acceptors_.insert (control_acceptor); entry->protocol_object ()->control_object (entry->control_protocol_object ()); } if (this->acceptors_.size () == 0) { if (TAO_debug_level > 0) ACE_ERROR ((LM_ERROR, "TAO (%P%t) cannot create any default acceptor\n")); return -1; } return 0; }
Definition at line 318 of file Transport.h.