📄 av_core.cpp
字号:
ACE_NEW_RETURN (udp_qos_item,
TAO_AV_Transport_Item ("UDP_QoS_Factory"),
-1);
udp_qos_item->factory (udp_qos_factory);
this->transport_factories_.insert (udp_qos_item);
#endif /* ACE_HAS_RAPI || ACE_HAS_WINSOCK2_GQOS */
#if defined ACE_HAS_SCTP
const char *sctp_seq_factory_str = "SCTP_SEQ_Factory";
TAO_AV_Transport_Factory *sctp_seq_factory = 0;
TAO_AV_Transport_Item *sctp_seq_item = 0;
sctp_seq_factory =
ACE_Dynamic_Service<TAO_AV_Transport_Factory>::instance (sctp_seq_factory_str);
if (sctp_seq_factory == 0)
{
if (TAO_debug_level)
ACE_ERROR ((LM_WARNING,
"(%P|%t) WARNING - No %s found in Service Repository."
" Using default instance.\n",
"SCTP SEQ Factory"));
ACE_NEW_RETURN (sctp_seq_factory,
TAO_AV_SCTP_SEQ_Factory,
-1);
}
else sctp_seq_factory->ref_count = 1;
ACE_NEW_RETURN (sctp_seq_item,
TAO_AV_Transport_Item ("SCTP_SEQ_Factory"),
-1);
sctp_seq_item->factory (sctp_seq_factory);
this->transport_factories_.insert (sctp_seq_item);
#endif /* ACE_HAS_SCTP */
return 0;
}
int
TAO_AV_Core::init_transport_factories (void)
{
TAO_AV_TransportFactorySetItor end = this->transport_factories_.end ();
TAO_AV_TransportFactorySetItor factory = this->transport_factories_.begin ();
if (factory == end)
{
if (TAO_debug_level > 0)
ACE_DEBUG ((LM_DEBUG,
"Loading default transport protocols\n"));
this->load_default_transport_factories ();
}
else
{
for (; factory != end; factory++)
{
const ACE_CString &name = (*factory)->name ();
if (TAO_debug_level > 0)
ACE_DEBUG ((LM_DEBUG,
"%s \n",
name.c_str ()));
(*factory)->factory (
ACE_Dynamic_Service<TAO_AV_Transport_Factory>::instance (name.c_str ()));
if ((*factory)->factory () == 0)
{
ACE_ERROR_RETURN ((LM_ERROR,
ACE_TEXT ("TAO (%P|%t) Unable to load ")
ACE_TEXT ("protocol <%s>, %p\n"),
name.c_str (), ""),
-1);
}
(*factory)->factory ()->ref_count = 1;
if (TAO_debug_level > 0)
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) Loaded protocol <%s>\n"),
name.c_str ()));
}
}
}
return 0;
}
int
TAO_AV_Core::load_default_flow_protocol_factories (void)
{
const char *udp_flow = "UDP_Flow_Factory";
const char *tcp_flow = "TCP_Flow_Factory";
const char *rtp_flow = "RTP_Flow_Factory";
const char *rtcp_flow = "RTCP_Flow_Factory";
const char *sfp_flow = "SFP_Flow_Factory";
TAO_AV_Flow_Protocol_Factory *udp_flow_factory = 0;
TAO_AV_Flow_Protocol_Item *udp_item = 0;
udp_flow_factory =
ACE_Dynamic_Service<TAO_AV_Flow_Protocol_Factory>::instance (udp_flow);
if (udp_flow_factory == 0)
{
if (TAO_debug_level)
ACE_ERROR ((LM_WARNING,
"(%P|%t) WARNING - No %s found in Service Repository."
" Using default instance.\n",
"UDP Flow Factory"));
ACE_NEW_RETURN (udp_flow_factory,
TAO_AV_UDP_Flow_Factory,
-1);
}
else udp_flow_factory->ref_count = 1;
ACE_NEW_RETURN (udp_item, TAO_AV_Flow_Protocol_Item ("UDP_Flow_Factory"), -1);
udp_item->factory (udp_flow_factory);
this->flow_protocol_factories_.insert (udp_item);
#if defined (ACE_HAS_RAPI) || defined (ACE_HAS_WINSOCK2_GQOS)
const char *udp_qos_flow = "UDP_QoS_Flow_Factory";
TAO_AV_Flow_Protocol_Factory *udp_qos_flow_factory = 0;
TAO_AV_Flow_Protocol_Item *udp_qos_flow_item = 0;
udp_qos_flow_factory =
ACE_Dynamic_Service<TAO_AV_Flow_Protocol_Factory>::instance (udp_qos_flow);
if (udp_qos_flow_factory == 0)
{
if (TAO_debug_level)
ACE_ERROR ((LM_WARNING,
"(%P|%t) WARNING - No %s found in Service Repository."
" Using default instance.\n",
"UDP QoS Flow Factory"));
ACE_NEW_RETURN (udp_qos_flow_factory,
TAO_AV_UDP_QoS_Flow_Factory,
-1);
}
else udp_qos_flow_factory->ref_count = 1;
ACE_NEW_RETURN (udp_qos_flow_item, TAO_AV_Flow_Protocol_Item ("UDP_QoS_Flow_Factory"), -1);
udp_qos_flow_item->factory (udp_qos_flow_factory);
this->flow_protocol_factories_.insert (udp_qos_flow_item);
#endif /* defined (ACE_HAS_RAPI) || defined (ACE_HAS_WINSOCK2_GQOS) */
#if defined ACE_HAS_SCTP
const char *sctp_seq_flow = "SCTP_SEQ_Flow_Factory";
TAO_AV_Flow_Protocol_Factory *sctp_seq_flow_factory = 0;
TAO_AV_Flow_Protocol_Item *sctp_seq_flow_item = 0;
sctp_seq_flow_factory =
ACE_Dynamic_Service<TAO_AV_Flow_Protocol_Factory>::instance (sctp_seq_flow);
if (sctp_seq_flow_factory == 0)
{
if (TAO_debug_level)
ACE_ERROR ((LM_WARNING,
"(%P|%t) WARNING - No %s found in Service Repository."
" Using default instance.\n",
"SCTP SEQ Flow Factory"));
ACE_NEW_RETURN (sctp_seq_flow_factory,
TAO_AV_SCTP_SEQ_Flow_Factory,
-1);
}
else sctp_seq_flow_factory->ref_count = 1;
ACE_NEW_RETURN (sctp_seq_flow_item, TAO_AV_Flow_Protocol_Item ("SCTP_SEQ_Flow_Factory"), -1);
sctp_seq_flow_item->factory (sctp_seq_flow_factory);
this->flow_protocol_factories_.insert (sctp_seq_flow_item);
#endif /* ACE_HAS_SCTP */
TAO_AV_Flow_Protocol_Factory *tcp_flow_factory = 0;
TAO_AV_Flow_Protocol_Item *tcp_item = 0;
tcp_flow_factory =
ACE_Dynamic_Service<TAO_AV_Flow_Protocol_Factory>::instance (tcp_flow);
if (tcp_flow_factory == 0)
{
if (TAO_debug_level)
ACE_ERROR ((LM_WARNING,
"(%P|%t) WARNING - No %s found in Service Repository."
" Using default instance.\n",
"TCP Flow Factory"));
ACE_NEW_RETURN (tcp_flow_factory,
TAO_AV_TCP_Flow_Factory,
-1);
}
else tcp_flow_factory->ref_count = 1;
ACE_NEW_RETURN (tcp_item, TAO_AV_Flow_Protocol_Item ("TCP_Flow_Factory"), -1);
tcp_item->factory (tcp_flow_factory);
this->flow_protocol_factories_.insert (tcp_item);
TAO_AV_Flow_Protocol_Factory *rtp_flow_factory = 0;
TAO_AV_Flow_Protocol_Item *rtp_item = 0;
rtp_flow_factory =
ACE_Dynamic_Service<TAO_AV_Flow_Protocol_Factory>::instance (rtp_flow);
if (rtp_flow_factory == 0)
{
if (TAO_debug_level)
ACE_ERROR ((LM_WARNING,
"(%P|%t) WARNING - No %s found in Service Repository."
" Using default instance.\n",
"RTP Flow Factory"));
ACE_NEW_RETURN (rtp_flow_factory,
TAO_AV_RTP_Flow_Factory,
-1);
}
else rtp_flow_factory->ref_count = 1;
ACE_NEW_RETURN (rtp_item, TAO_AV_Flow_Protocol_Item ("RTP_Flow_Factory"), -1);
rtp_item->factory (rtp_flow_factory);
this->flow_protocol_factories_.insert (rtp_item);
TAO_AV_Flow_Protocol_Factory *rtcp_flow_factory = 0;
TAO_AV_Flow_Protocol_Item *rtcp_item = 0;
rtcp_flow_factory =
ACE_Dynamic_Service<TAO_AV_Flow_Protocol_Factory>::instance (rtcp_flow);
if (rtcp_flow_factory == 0)
{
if (TAO_debug_level)
ACE_ERROR ((LM_WARNING,
"(%P|%t) WARNING - No %s found in Service Repository."
" Using default instance.\n",
"RTCP Flow Factory"));
ACE_NEW_RETURN (rtcp_flow_factory,
TAO_AV_RTCP_Flow_Factory,
-1);
}
else rtcp_flow_factory->ref_count = 1;
ACE_NEW_RETURN (rtcp_item, TAO_AV_Flow_Protocol_Item ("RTCP_Flow_Factory"), -1);
rtcp_item->factory (rtcp_flow_factory);
this->flow_protocol_factories_.insert (rtcp_item);
TAO_AV_Flow_Protocol_Factory *sfp_flow_factory = 0;
TAO_AV_Flow_Protocol_Item *sfp_item = 0;
sfp_flow_factory =
ACE_Dynamic_Service<TAO_AV_Flow_Protocol_Factory>::instance (sfp_flow);
if (sfp_flow_factory == 0)
{
if (TAO_debug_level)
ACE_ERROR ((LM_WARNING,
"(%P|%t) WARNING - No %s found in Service Repository."
" Using default instance.\n",
"SFP Flow Factory"));
ACE_NEW_RETURN (sfp_flow_factory,
TAO_AV_SFP_Factory,
-1);
}
else sfp_flow_factory->ref_count = 1;
ACE_NEW_RETURN (sfp_item, TAO_AV_Flow_Protocol_Item ("SFP_Flow_Factory"), -1);
sfp_item->factory (sfp_flow_factory);
this->flow_protocol_factories_.insert (sfp_item);
return 0;
}
int
TAO_AV_Core::init_flow_protocol_factories (void)
{
TAO_AV_Flow_ProtocolFactorySetItor end = this->flow_protocol_factories_.end ();
TAO_AV_Flow_ProtocolFactorySetItor factory = this->flow_protocol_factories_.begin ();
if (factory == end)
{
ACE_DEBUG ((LM_DEBUG,
"Loading default flow protocol factories\n"));
this->load_default_flow_protocol_factories ();
}
else
{
for (; factory != end; factory++)
{
const ACE_CString &name = (*factory)->name ();
if (TAO_debug_level > 0)
ACE_DEBUG ((LM_DEBUG,
"%s \n",
name.c_str ()));
(*factory)->factory (
ACE_Dynamic_Service<TAO_AV_Flow_Protocol_Factory>::instance (name.c_str ()));
if ((*factory)->factory () == 0)
{
ACE_ERROR_RETURN ((LM_ERROR,
ACE_TEXT ("TAO (%P|%t) Unable to load ")
ACE_TEXT ("protocol <%s>, %p\n"),
name.c_str (), ""),
-1);
}
(*factory)->factory ()->ref_count = 1;
if (TAO_debug_level > 0)
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) Loaded protocol <%s>\n"),
name.c_str ()));
}
}
}
return 0;
}
/* static */
int
TAO_AV_Core::deactivate_servant (PortableServer::Servant servant)
{
// Because of reference counting, the POA will automatically delete
// the servant when all pending requests on this servant are
// complete.
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
PortableServer::POA_var poa = servant->_default_POA (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
PortableServer::ObjectId_var id = poa->servant_to_id (servant
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
poa->deactivate_object (id.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "deactivate_servant");
return -1;
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
return 0;
}
/* static */
char *
TAO_AV_Core::get_flowname (const char *flow_spec_entry_str)
{
ACE_CString flow_spec_entry (flow_spec_entry_str);
int slash_pos = flow_spec_entry.find ('\\');
ACE_CString flow_name;
if (slash_pos != flow_spec_entry.npos)
flow_name = flow_spec_entry.substring (0, slash_pos);
else
flow_name = flow_spec_entry_str;
return CORBA::string_dup (flow_name.c_str ());
}
ACE_CString
TAO_AV_Core::get_control_flowname(const char *flowname)
{
ACE_CString control_flowname;
control_flowname = "c_";
control_flowname = control_flowname + flowname;
return flowname;
}
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
template class ACE_Singleton<TAO_AV_Core,ACE_Null_Mutex>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate ACE_Singleton<TAO_AV_Core,ACE_Null_Mutex>
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -