本文整理汇总了C++中TAO_Stub类的典型用法代码示例。如果您正苦于以下问题:C++ TAO_Stub类的具体用法?C++ TAO_Stub怎么用?C++ TAO_Stub使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TAO_Stub类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: safe_stub
Echo *
POA_Echo::_this (void)
{
TAO_Stub *stub = this->_create_stub ();
TAO_Stub_Auto_Ptr safe_stub (stub);
::CORBA::Object_ptr tmp = CORBA::Object_ptr ();
::CORBA::Boolean const _tao_opt_colloc =
stub->servant_orb_var ()->orb_core ()->optimize_collocation_objects ();
ACE_NEW_RETURN (
tmp,
::CORBA::Object (stub, _tao_opt_colloc, this),
0
);
::CORBA::Object_var obj = tmp;
(void) safe_stub.release ();
typedef ::Echo STUB_SCOPED_NAME;
return
TAO::Narrow_Utils<STUB_SCOPED_NAME>::unchecked_narrow (
obj.in (),
_TAO_Echo_Proxy_Broker_Factory_function_pointer
);
}
示例2:
TAO::Invocation_Retry_State::Invocation_Retry_State (TAO_Stub &stub)
: forward_on_reply_closed_count_ (0)
, forward_on_exception_limit_used_ (false)
{
this->ex_count_map_[FOE_OBJECT_NOT_EXIST] = 0;
this->ex_count_map_[FOE_COMM_FAILURE] = 0;
this->ex_count_map_[FOE_TRANSIENT] = 0;
this->ex_count_map_[FOE_INV_OBJREF] = 0;
// Cast away const to avoid tedious iterator operations on the ACE_Array_Map.
TAO::Invocation_Retry_Params &command_line_params =
const_cast<TAO::Invocation_Retry_Params &> (stub.orb_core ()
->orb_params ()->invocation_retry_params ());
TAO::Invocation_Retry_Params &client_factory_params =
const_cast<TAO::Invocation_Retry_Params &> (stub.orb_core ()
->client_factory ()->invocation_retry_params ());
retry_params_calc(command_line_params,
client_factory_params,
this->retry_params_);
for (Invocation_Retry_Params::exception_limit_map_type::const_iterator i =
this->retry_params_.forward_on_exception_limit_.begin();
i != this->retry_params_.forward_on_exception_limit_.end(); ++i)
{
if (i->second > 0)
{
forward_on_exception_limit_used_ = true;
break;
}
}
}
示例3:
void
Asynch_Invocation_Adapter::invoke (
Messaging::ReplyHandler_ptr reply_handler_ptr,
const TAO_Reply_Handler_Stub &reply_handler_stub)
{
TAO_Stub * stub =
this->get_stub ();
if (TAO_debug_level >= 4)
{
TAOLIB_DEBUG ((LM_DEBUG,
"TAO_Messaging (%P|%t) - Asynch_Invocation_Adapter::"
"invoke\n"));
}
// If the reply handler is nil, we do not create a reply dispatcher.
// The ORB will drop replies to which it cannot associate a reply
// dispatcher.
if (!CORBA::is_nil (reply_handler_ptr))
{
// New reply dispatcher on the heap or allocator, because
// we will go out of scope and hand over the reply dispatcher
// to the ORB.
TAO_Asynch_Reply_Dispatcher *rd = 0;
// Get the allocator we could use.
ACE_Allocator* ami_allocator =
stub->orb_core ()->lane_resources().ami_response_handler_allocator();
// If we have an allocator, use it, else use the heap.
if (ami_allocator)
{
ACE_NEW_MALLOC (
rd,
static_cast<TAO_Asynch_Reply_Dispatcher *> (
ami_allocator->malloc (sizeof (TAO_Asynch_Reply_Dispatcher))),
TAO_Asynch_Reply_Dispatcher (reply_handler_stub,
reply_handler_ptr,
stub->orb_core (),
ami_allocator));
}
else
{
ACE_NEW (rd,
TAO_Asynch_Reply_Dispatcher (reply_handler_stub,
reply_handler_ptr,
stub->orb_core (),
0));
}
if (rd == 0)
{
throw ::CORBA::NO_MEMORY ();
}
this->safe_rd_.reset (rd);
}
Invocation_Adapter::invoke (0, 0);
}
示例4: policy_manager
TAO_Stub *
TAO_Stub::set_policy_overrides (const CORBA::PolicyList & policies,
CORBA::SetOverrideType set_add)
{
// Notice the use of an explicit constructor....
auto_ptr<TAO_Policy_Set> policy_manager (
new TAO_Policy_Set (TAO_POLICY_OBJECT_SCOPE));
if (set_add == CORBA::SET_OVERRIDE)
{
policy_manager->set_policy_overrides (policies, set_add);
}
else if (this->policies_ == 0)
{
policy_manager->set_policy_overrides (policies, CORBA::SET_OVERRIDE);
}
else
{
policy_manager->copy_from (this->policies_);
policy_manager->set_policy_overrides (policies, set_add);
}
TAO_Stub* stub = this->orb_core_->create_stub (this->type_id.in (),
this->base_profiles_);
stub->policies_ = policy_manager.release ();
// Copy the servant ORB if it is present.
stub->servant_orb (this->servant_orb_var ().in ());
return stub;
}
示例5: ACE_NEW_THROW_EX
IOP::TaggedProfile *
TAO_ClientRequestInfo::effective_profile (void)
{
this->check_validity ();
IOP::TaggedProfile *tagged_profile = 0;
ACE_NEW_THROW_EX (tagged_profile,
IOP::TaggedProfile,
CORBA::NO_MEMORY (
CORBA::SystemException::_tao_minor_code (
TAO::VMCID,
ENOMEM),
CORBA::COMPLETED_NO));
IOP::TaggedProfile_var safe_tagged_profile = tagged_profile;
TAO_Stub *stub =
this->invocation_->effective_target ()->_stubobj ();
IOP::TaggedProfile *ep =
stub->profile_in_use ()->create_tagged_profile ();
if (ep == 0)
{
throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, CORBA::COMPLETED_NO);
}
// @@BAD_PARAM exception
tagged_profile->tag = ep->tag;
tagged_profile->profile_data = ep->profile_data; // Deep copy
return safe_tagged_profile._retn ();
}
示例6:
IOP::TaggedComponentSeq *
TAO_ClientRequestInfo::get_effective_components (IOP::ComponentId id)
{
this->check_validity ();
TAO_Stub *stub = this->invocation_->target ()->_stubobj ();
TAO_Tagged_Components &ecs = stub->profile_in_use ()->tagged_components ();
IOP::MultipleComponentProfile &components = ecs.components ();
IOP::TaggedComponentSeq *tagged_components = 0;
IOP::TaggedComponentSeq_var safe_tagged_components;
const CORBA::ULong len = components.length ();
for (CORBA::ULong i = 0; i < len; ++i)
{
if (components[i].tag == id)
{
if (tagged_components == 0)
{
// Only allocate a sequence if we have tagged components
// to place into the sequence.
ACE_NEW_THROW_EX (tagged_components,
IOP::TaggedComponentSeq,
CORBA::NO_MEMORY (
CORBA::SystemException::_tao_minor_code (
TAO::VMCID,
ENOMEM),
CORBA::COMPLETED_NO));
safe_tagged_components = tagged_components;
}
const CORBA::ULong old_len = safe_tagged_components->length ();
safe_tagged_components->length (old_len + 1);
safe_tagged_components[old_len] = components[i]; // Deep copy
}
}
if (tagged_components == 0)
{
// No tagged component sequence was allocated, meaning no tagged
// components were found that matched the given
// IOP::ComponentId.
throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, CORBA::COMPLETED_NO);
}
return safe_tagged_components._retn ();
}
示例7:
void
Invocation_Adapter::object_forwarded (CORBA::Object_var &effective_target,
TAO_Stub *stub,
CORBA::Boolean permanent_forward)
{
// The object pointer has to be changed to a TAO_Stub pointer
// in order to obtain the profiles.
TAO_Stub *stubobj = 0;
bool nil_forward_ref = false;
if (CORBA::is_nil (effective_target.in ()))
nil_forward_ref = true;
else
{
stubobj = effective_target->_stubobj ();
if (stubobj && stubobj->base_profiles ().size () == 0)
nil_forward_ref = true;
}
if (nil_forward_ref)
throw ::CORBA::TRANSIENT (
CORBA::SystemException::_tao_minor_code (
TAO_INVOCATION_LOCATION_FORWARD_MINOR_CODE,
0),
CORBA::COMPLETED_NO);
if (stubobj == 0)
throw ::CORBA::INTERNAL (
CORBA::SystemException::_tao_minor_code (
TAO_INVOCATION_LOCATION_FORWARD_MINOR_CODE,
EINVAL),
CORBA::COMPLETED_NO);
// Reset the profile in the stubs
stub->add_forward_profiles (stubobj->base_profiles (), permanent_forward);
if (stub->next_profile () == 0)
throw ::CORBA::TRANSIENT (
CORBA::SystemException::_tao_minor_code (
TAO_INVOCATION_LOCATION_FORWARD_MINOR_CODE,
0),
CORBA::COMPLETED_NO);
}
示例8: _nil
template<typename T> T *
AbstractBase_Narrow_Utils<T>::unchecked_narrow (CORBA::AbstractBase_ptr obj)
{
if (CORBA::is_nil (obj))
{
return T::_nil ();
}
T_ptr proxy = T::_nil ();
try
{
if (obj->_is_objref ())
{
TAO_Stub* stub = obj->_stubobj ();
bool const collocated =
!CORBA::is_nil (stub->servant_orb_var ().in ())
&& stub->optimize_collocation_objects ()
&& obj->_is_collocated ();
ACE_NEW_RETURN (proxy,
T (obj->_stubobj (),
collocated,
obj->_servant ()),
T::_nil ());
}
else
{
proxy = dynamic_cast<T *> (obj);
if (proxy)
proxy->_add_ref ();
}
}
catch (const ::CORBA::Exception&)
{
}
return proxy;
}
示例9: safe_stub
Test::Roundtrip *
POA_Test::Roundtrip::_this (void)
{
TAO_Stub *stub = this->_create_stub ();
TAO_Stub_Auto_Ptr safe_stub (stub);
::CORBA::Object_ptr tmp = CORBA::Object_ptr ();
::CORBA::Boolean const _tao_opt_colloc =
stub->servant_orb_var ()->orb_core ()->optimize_collocation_objects ();
ACE_NEW_RETURN (
tmp,
::CORBA::Object (stub, _tao_opt_colloc, this),
0);
::CORBA::Object_var obj = tmp;
(void) safe_stub.release ();
typedef ::Test::Roundtrip STUB_SCOPED_NAME;
return
TAO::Narrow_Utils<STUB_SCOPED_NAME>::unchecked_narrow (
obj.in ());
}
示例10: if
TAO::Collocation_Strategy
Invocation_Adapter::collocation_strategy (CORBA::Object_ptr object)
{
TAO::Collocation_Strategy strategy = TAO::TAO_CS_REMOTE_STRATEGY;
TAO_Stub *stub = object->_stubobj ();
if (!CORBA::is_nil (stub->servant_orb_var ().in ()) &&
stub->servant_orb_var ()->orb_core () != 0)
{
TAO_ORB_Core *orb_core = stub->servant_orb_var ()->orb_core ();
if (orb_core->collocation_resolver ().is_collocated (object))
{
switch (orb_core->get_collocation_strategy ())
{
case TAO_ORB_Core::TAO_COLLOCATION_THRU_POA:
{
// check opportunity
if (ACE_BIT_ENABLED (this->collocation_opportunity_,
TAO::TAO_CO_THRU_POA_STRATEGY))
{
strategy = TAO::TAO_CS_THRU_POA_STRATEGY;
}
else
{
if (TAO_debug_level > 0)
{
TAOLIB_ERROR ((LM_ERROR,
ACE_TEXT ("Invocation_Adapter::collocation_strategy, ")
ACE_TEXT ("request for through poa collocation ")
ACE_TEXT ("without needed collocation opportunity.\n")));
}
// collocation object, but no collocation_opportunity for Thru_poa
throw ::CORBA::INTERNAL (
CORBA::SystemException::_tao_minor_code (
TAO::VMCID,
EINVAL),
CORBA::COMPLETED_NO);
}
break;
}
case TAO_ORB_Core::TAO_COLLOCATION_DIRECT:
{
if (ACE_BIT_ENABLED (this->collocation_opportunity_,
TAO::TAO_CO_DIRECT_STRATEGY)
&& (object->_servant () != 0))
{
strategy = TAO::TAO_CS_DIRECT_STRATEGY;
}
else
{
if (TAO_debug_level > 0)
{
TAOLIB_ERROR ((LM_ERROR,
ACE_TEXT ("Invocation_Adapter::collocation_strategy, ")
ACE_TEXT ("request for direct collocation ")
ACE_TEXT ("without needed collocation opportunity.\n")));
}
// collocation object, but no collocation_opportunity for Direct
// or servant() == 0
throw ::CORBA::INTERNAL (
CORBA::SystemException::_tao_minor_code (
TAO::VMCID,
EINVAL),
CORBA::COMPLETED_NO);
}
break;
}
case TAO_ORB_Core::TAO_COLLOCATION_BEST:
{
if (ACE_BIT_ENABLED (this->collocation_opportunity_,
TAO::TAO_CO_DIRECT_STRATEGY)
&& (object->_servant () != 0))
{
strategy = TAO::TAO_CS_DIRECT_STRATEGY;
}
else if (ACE_BIT_ENABLED (this->collocation_opportunity_,
TAO::TAO_CO_THRU_POA_STRATEGY))
{
strategy = TAO::TAO_CS_THRU_POA_STRATEGY;
}
else
{
strategy = TAO::TAO_CS_REMOTE_STRATEGY;
}
break;
}
}
}
}
return strategy;
}
示例11: return
CORBA::Boolean
operator<< (TAO_OutputCDR &strm, const CORBA::AbstractBase_ptr abs)
{
CORBA::Boolean discriminator = true;
// We marshal a null abstract interface ptr as a discriminator
// plus null object reference (see CORBA::Object::marshal()
// and operator << for CORBA::Object).
if (CORBA::is_nil (abs))
{
// Marshal discriminator, then empty type hint.
strm << ACE_OutputCDR::from_boolean (discriminator);
return strm << CORBA::Object::_nil ();
}
if (abs->_is_objref ())
{
if (strm << ACE_OutputCDR::from_boolean (discriminator))
{
TAO_Stub *stubobj = abs->_stubobj ();
if (stubobj == 0)
{
return false;
}
// STRING, a type ID hint
if ((strm << stubobj->type_id.in ()) == 0)
{
return false;
}
const TAO_MProfile& mprofile = stubobj->base_profiles ();
CORBA::ULong const profile_count = mprofile.profile_count ();
if ((strm << profile_count) == 0)
{
return false;
}
// @@ The MProfile should be locked during this iteration, is there
// anyway to achieve that?
for (CORBA::ULong i = 0; i < profile_count; ++i)
{
const TAO_Profile *p = mprofile.get_profile (i);
if (p->encode (strm) == 0)
{
return false;
}
}
return (CORBA::Boolean) strm.good_bit ();
}
}
else
{
discriminator = false;
if (strm << ACE_OutputCDR::from_boolean (discriminator))
{
CORBA::ULong value_tag = TAO_OBV_GIOP_Flags::Value_tag_base
| TAO_OBV_GIOP_Flags::Type_info_single;
if ((strm.write_ulong (value_tag)) == 0)
{
return false;
}
if ((strm << abs->_tao_obv_repository_id ()) == 0)
{
return false;
}
return abs->_tao_marshal_v (strm);
}
}
return false;
}