rt_policy_i.cpp
来自「这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用」· C++ 代码 · 共 1,410 行 · 第 1/3 页
CPP
1,410 行
ACE_TRY_CHECK;
send_buffer_size =
tcp_properties->send_buffer_size (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
recv_buffer_size =
tcp_properties->recv_buffer_size (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
no_delay = tcp_properties->no_delay (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
enable_network_priority =
tcp_properties->enable_network_priority (ACE_ENV_SINGLE_ARG_PARAMETER);
}
if (ACE_OS::strcmp (protocol_type, "uiop") == 0)
{
RTCORBA::UnixDomainProtocolProperties_var uiop_properties =
RTCORBA::UnixDomainProtocolProperties::_narrow (properties.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (!CORBA::is_nil (uiop_properties.in ()))
{
// Extract and locally store properties of interest.
send_buffer_size =
uiop_properties->send_buffer_size (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
recv_buffer_size =
uiop_properties->recv_buffer_size ();
ACE_TRY_CHECK;
}
}
}
ACE_CATCHANY
{
if (TAO_debug_level > 4)
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"TAO_ClientProtocolPolicy::hook");
return -1;
}
ACE_ENDTRY;
return 0;
}
TAO_Cached_Policy_Type
TAO_ClientProtocolPolicy::_tao_cached_type (void) const
{
return TAO_CACHED_POLICY_RT_CLIENT_PROTOCOL;
}
TAO_Policy_Scope
TAO_ClientProtocolPolicy::_tao_scope (void) const
{
return ACE_static_cast (TAO_Policy_Scope,
TAO_POLICY_DEFAULT_SCOPE |
TAO_POLICY_CLIENT_EXPOSED);
}
CORBA::Boolean
TAO_ClientProtocolPolicy::_tao_encode (TAO_OutputCDR &out_cdr)
{
CORBA::Boolean is_write_ok = out_cdr << this->protocols_.length ();
for (CORBA::ULong i = 0;
(i < this->protocols_.length ()) && is_write_ok;
i++)
{
is_write_ok =
(out_cdr << this->protocols_[i].protocol_type)
&&
this->protocols_[i].orb_protocol_properties->_tao_encode (out_cdr)
&&
this->protocols_[i].transport_protocol_properties->_tao_encode (out_cdr);
}
return is_write_ok;
}
CORBA::Boolean
TAO_ClientProtocolPolicy::_tao_decode (TAO_InputCDR &in_cdr)
{
CORBA::ULong length;
CORBA::Boolean is_read_ok = in_cdr >> length;
this->protocols_.length (length);
for (CORBA::ULong i = 0; (i < length) && is_read_ok; i++)
{
is_read_ok = in_cdr >> this->protocols_[i].protocol_type;
this->protocols_[i].orb_protocol_properties =
TAO_Protocol_Properties_Factory::create_orb_protocol_property
(this->protocols_[i].protocol_type);
this->protocols_[i].transport_protocol_properties =
TAO_Protocol_Properties_Factory::create_transport_protocol_property
(this->protocols_[i].protocol_type);
if (is_read_ok
&& (this->protocols_[i].orb_protocol_properties.ptr () != 0))
is_read_ok =
this->protocols_[i].orb_protocol_properties->_tao_decode (in_cdr);
if (is_read_ok
&& (this->protocols_[i].transport_protocol_properties.ptr () != 0))
is_read_ok =
this->protocols_[i].transport_protocol_properties->_tao_decode (in_cdr);
}
return is_read_ok;
}
RTCORBA::ProtocolList &
TAO_ClientProtocolPolicy::protocols_rep (void)
{
return protocols_;
}
// ****************************************************************
TAO_TCP_Properties::TAO_TCP_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)
: send_buffer_size_ (send_buffer_size),
recv_buffer_size_ (recv_buffer_size),
keep_alive_ (keep_alive),
dont_route_ (dont_route),
no_delay_ (no_delay),
enable_network_priority_ (enable_network_priority)
{
}
TAO_TCP_Properties::~TAO_TCP_Properties (void)
{
}
CORBA::Long
TAO_TCP_Properties::send_buffer_size (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->send_buffer_size_;
}
void
TAO_TCP_Properties::send_buffer_size (CORBA::Long send_buffer_size
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
this->send_buffer_size_ = send_buffer_size;
}
CORBA::Long
TAO_TCP_Properties::recv_buffer_size (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->recv_buffer_size_;
}
void
TAO_TCP_Properties::recv_buffer_size (CORBA::Long recv_buffer_size
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
this->recv_buffer_size_ = recv_buffer_size;
}
CORBA::Boolean
TAO_TCP_Properties::keep_alive (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->keep_alive_;
}
void
TAO_TCP_Properties::keep_alive (CORBA::Boolean keep_alive
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
this->keep_alive_ = keep_alive;
}
CORBA::Boolean
TAO_TCP_Properties::dont_route (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->dont_route_;
}
void
TAO_TCP_Properties::dont_route (CORBA::Boolean dont_route
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
this->dont_route_ = dont_route;
}
CORBA::Boolean TAO_TCP_Properties::no_delay (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->no_delay_;
}
void
TAO_TCP_Properties::no_delay (CORBA::Boolean no_delay
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
this->no_delay_ = no_delay;
}
CORBA::Boolean
TAO_TCP_Properties::enable_network_priority (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->enable_network_priority_;
}
void
TAO_TCP_Properties::enable_network_priority (CORBA::Boolean enable
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
this->enable_network_priority_ = enable;
}
CORBA::Boolean
TAO_TCP_Properties::_tao_encode (TAO_OutputCDR & out_cdr)
{
return ((out_cdr << this->send_buffer_size_)
&&
(out_cdr << this->recv_buffer_size_)
&&
(out_cdr.write_boolean (this->keep_alive_))
&&
(out_cdr.write_boolean (this->dont_route_))
&&
(out_cdr.write_boolean (this->no_delay_)));
}
CORBA::Boolean
TAO_TCP_Properties::_tao_decode (TAO_InputCDR &in_cdr)
{
return ((in_cdr >> this->send_buffer_size_)
&&
(in_cdr >> this->recv_buffer_size_)
&&
(in_cdr.read_boolean (this->keep_alive_))
&&
(in_cdr.read_boolean (this->dont_route_))
&&
(in_cdr.read_boolean (this->no_delay_)));
}
// ****************************************************************
TAO_Unix_Domain_Properties::TAO_Unix_Domain_Properties
(CORBA::Long send_buffer_size,
CORBA::Long recv_buffer_size)
: send_buffer_size_ (send_buffer_size),
recv_buffer_size_ (recv_buffer_size)
{
}
TAO_Unix_Domain_Properties::~TAO_Unix_Domain_Properties (void)
{
}
CORBA::Long
TAO_Unix_Domain_Properties::send_buffer_size (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->send_buffer_size_;
}
void
TAO_Unix_Domain_Properties::send_buffer_size (CORBA::Long send_buffer_size
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
this->send_buffer_size_ = send_buffer_size;
}
CORBA::Long
TAO_Unix_Domain_Properties::recv_buffer_size (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->recv_buffer_size_;
}
void
TAO_Unix_Domain_Properties::recv_buffer_size (CORBA::Long recv_buffer_size
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
this->recv_buffer_size_ = recv_buffer_size;
}
CORBA::Boolean
TAO_Unix_Domain_Properties::_tao_encode (TAO_OutputCDR &out_cdr)
{
return ((out_cdr << this->send_buffer_size_)
&& (out_cdr << this->recv_buffer_size_));
}
CORBA::Boolean
TAO_Unix_Domain_Properties::_tao_decode (TAO_InputCDR &in_cdr)
{
return ((in_cdr >> this->send_buffer_size_)
&& (in_cdr >> this->recv_buffer_size_));
}
// ****************************************************************
TAO_SMEM_Properties::TAO_SMEM_Properties (void)
: preallocate_buffer_size_ (0),
mmap_filename_ (),
mmap_lockname_ ()
{
}
TAO_SMEM_Properties::~TAO_SMEM_Properties (void)
{
}
CORBA::Long
TAO_SMEM_Properties::preallocate_buffer_size (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->preallocate_buffer_size_;
}
void
TAO_SMEM_Properties::preallocate_buffer_size (CORBA::Long preallocate_buffer_size
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
this->preallocate_buffer_size_ = preallocate_buffer_size;
}
char *
TAO_SMEM_Properties::mmap_filename (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->mmap_filename_.rep ();
}
void
TAO_SMEM_Properties::mmap_filename (const char * mmap_filename
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
this->mmap_filename_.set (mmap_filename);
}
char *
TAO_SMEM_Properties::mmap_lockname (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->mmap_lockname_.rep ();
}
void
TAO_SMEM_Properties::mmap_lockname (const char * mmap_lockname
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
this->mmap_lockname_.set (mmap_lockname);
}
CORBA::Boolean
TAO_SMEM_Properties::_tao_encode (TAO_OutputCDR &out_cdr)
{
return ((out_cdr << this->preallocate_buffer_size_)
&&
(out_cdr << this->mmap_filename_)
&&
(out_cdr << this->mmap_lockname_));
}
CORBA::Boolean
TAO_SMEM_Properties::_tao_decode (TAO_InputCDR &in_cdr)
{
return ((in_cdr >> this->preallocate_buffer_size_)
&&
(in_cdr >> this->mmap_filename_)
&&
(in_cdr >> this->mmap_lockname_));
}
// ****************************************************************
TAO_GIOP_Properties::TAO_GIOP_Properties (void)
{
}
TAO_GIOP_Properties::~TAO_GIOP_Properties (void)
{
}
CORBA::Boolean
TAO_GIOP_Properties::_tao_encode (TAO_OutputCDR &)
{
return 1;
}
CORBA::Boolean
TAO_GIOP_Properties::_tao_decode (TAO_InputCDR &)
{
return 1;
}
// ****************************************************************
RTCORBA::ProtocolProperties*
TAO_Protocol_Properties_Factory::create_transport_protocol_property (
IOP::ProfileId id)
{
RTCORBA::ProtocolProperties* property = 0;
if (id == IOP::TAG_INTERNET_IOP)
ACE_NEW_RETURN (property,
TAO_TCP_Properties,
0);
else if(id == TAO_TAG_SHMEM_PROFILE)
ACE_NEW_RETURN (property,
TAO_SMEM_Properties,
0);
else if (id == TAO_TAG_UIOP_PROFILE)
ACE_NEW_RETURN (property,
TAO_Unix_Domain_Properties,
0);
return property;
}
RTCORBA::ProtocolProperties*
TAO_Protocol_Properties_Factory::create_orb_protocol_property (IOP::ProfileId id)
{
RTCORBA::ProtocolProperties* property = 0;
if (id == IOP::TAG_INTERNET_IOP)
ACE_NEW_RETURN (property,
TAO_GIOP_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_Properties,
0);
return property;
}
#endif /* TAO_HAS_CORBA_MESSAGING && TAO_HAS_CORBA_MESSAGING != 0 */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?