本文整理汇总了C++中portableinterceptor::ServerRequestInfo_ptr::object_id方法的典型用法代码示例。如果您正苦于以下问题:C++ ServerRequestInfo_ptr::object_id方法的具体用法?C++ ServerRequestInfo_ptr::object_id怎么用?C++ ServerRequestInfo_ptr::object_id使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类portableinterceptor::ServerRequestInfo_ptr
的用法示例。
在下文中一共展示了ServerRequestInfo_ptr::object_id方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ftr
void
ReplicaController::send_reply (
PortableInterceptor::ServerRequestInfo_ptr ri)
{
FT::FTRequestServiceContext_var ftr (
extract_context (ri));
ACE_DEBUG ((LM_DEBUG,
"(%P|%t) Sending reply for %s with rid %i\n",
ftr->client_id.in (),
ftr->retention_id));
// Prepare reply for logging.
CORBA::Any_var result =
ri->result ();
TAO_OutputCDR cdr;
result->impl ()->marshal_value (cdr);
Dynamic::ParameterList_var pl =
ri->arguments ();
CORBA::ULong len = pl->length ();
for (CORBA::ULong index = 0; index != len ; ++index)
{
//@@ No chance for PARAM_OUT
if ((*pl)[index].mode == CORBA::PARAM_INOUT)
{
(*pl)[index].argument.impl ()->marshal_value (cdr);
}
}
CORBA::OctetSeq_var reply;
ACE_NEW (reply.out (), CORBA::OctetSeq (cdr.total_length ()));
reply->length (cdr.total_length ());
CORBA::Octet* buf = reply->get_buffer ();
// @@ What if this throws an exception?? We don't have any way to
// check whether this succeeded
for (ACE_Message_Block const* mb = cdr.begin ();
mb != 0;
mb = mb->cont ())
{
ACE_OS::memcpy (buf, mb->rd_ptr (), mb->length ());
buf += mb->length ();
}
// Logging the reply and state update.
//
// First send message to members.
//
{
// Extract state update.
CORBA::OctetSeq_var oid = ri->object_id ();
PortableInterceptor::AdapterName_var an = ri->adapter_name ();
CORBA::Any_var state = ri->get_slot (state_slot_id ());
CORBA::TypeCode_var tc = state->type ();
if (tc->kind () == CORBA::tk_null)
{
ACE_DEBUG ((LM_DEBUG, "Slot update is void\n"));
PortableServer::POA_var poa = resolve_poa (an.in ());
PortableServer::ServantBase_var servant =
poa->id_to_servant (oid.in ());
Checkpointable* target =
dynamic_cast<Checkpointable*> (servant.in ());
if (target)
{
CORBA::Any_var tmp = target->get_state ();
if (tmp.ptr () != 0) state = tmp._retn ();
}
}
TAO_OutputCDR cdr;
cdr << oid.in ();
cdr << an.in ();
cdr << ftr->client_id.in ();
cdr << ftr->retention_id;
cdr << reply.in ();
cdr << state.in ();
size_t size = cdr.total_length ();
//.........这里部分代码省略.........
示例2: NO_PERMISSION
void
TAO::SSLIOP::Server_Invocation_Interceptor::receive_request (
PortableInterceptor::ServerRequestInfo_ptr ri )
{
SecurityLevel2::AccessDecision_var ad_tmp =
this->sec2manager_->access_decision ();
TAO::SL2::AccessDecision_var ad =
TAO::SL2::AccessDecision::_narrow (ad_tmp.in ());
CORBA::Boolean const no_ssl =
this->ssliop_current_->no_context ();
if (TAO_debug_level >= 3)
ORBSVCS_DEBUG ((LM_DEBUG, "SSLIOP (%P|%t) Interceptor (context), ssl=%d\n", !(no_ssl)));
// if
// (1) no SSL session state is available (which means that the
// invocation is received across a non-SSL transport)
// AND
// (2) the required Quality of Protection is something other
// than SecQOPNoProtection (set via -SSLNoProtection)
if (no_ssl && this->qop_ != ::Security::SecQOPNoProtection)
{
/*
* Set up all the arguments needed by the call
* to AccessDecision::access_allowed()
*/
/* Get the credentials from SSLIOP */
SecurityLevel2::CredentialsList cred_list; // initial empty?
#if 0
try {
SecurityLevel2::ReceivedCredentials_var rcvd_creds =
this->sec2_current_->received_credentials ();
// this gets the credentials received from the other side. We
// should be able to put this into a CredentialsList with no
// problem.
//
// Do I really need to implement a sec2_current, or can I hack
// the conversion at this level? I probably ought to do it as
// a real sec2_current with the conversion from sec3->sec2
// happening at a lower level.
cred_list.length(1);
cred_list[0] = rcvd_creds.in ();
/*
So, in looking for how we can do this, I find that the
SL3_SecurityCurrent::client_credentials() delegates to SL3_SecurityCurrent_Impl::client_credentials(),
which is pure virtual.
*/
}
catch (...) {
}
#endif
/* Gather the elements that uniquely identify the target object */
CORBA::ORBid_var orb_id = ri->orb_id ();
CORBA::OctetSeq_var adapter_id = ri->adapter_id ();
CORBA::OctetSeq_var object_id = ri->object_id ();
CORBA::String_var operation_name = ri->operation ();
CORBA::Boolean it_should_happen = false;
it_should_happen = ad->access_allowed_ex (orb_id.in (),
adapter_id.in (),
object_id.in (),
cred_list,
operation_name.in());
if (TAO_debug_level >= 3)
{
ORBSVCS_DEBUG ((LM_DEBUG,
"TAO (%P|%t) SL2::access_allowed_ex returned %s\n",
it_should_happen ? "true" : "false"));
}
if (! it_should_happen)
throw CORBA::NO_PERMISSION ();
}
}
示例3:
void
ServerInterceptorDispatcher::receive_request(PortableInterceptor::ServerRequestInfo_ptr info)
throw(PortableInterceptor::ForwardRequest, CORBA::SystemException)
{
DEBUG_OUT ("ServerInterceptorDispatcher: receive_request");
// call for regsitered COPI
const Components::ConfigValues* temp_config=0;
//call for all interceptors
// determine the id
// all containers
Qedo::ContainerList* temp_container_list = component_server_ -> get_all_containers();
std::list <ContainerInterfaceImpl*>::iterator container_iter;
//identify the id
const char* id = 0;
for (container_iter = temp_container_list->begin(); container_iter != temp_container_list->end(); container_iter++)
{
for (unsigned int i = 0; i < (*container_iter) -> installed_homes_.size(); i++)
{
for (unsigned int j = 0; j < (((*container_iter) -> installed_homes_)[i].home_servant_->component_instances_.size()); j++)
{
// search for the oid
if (Qedo::compare_OctetSeqs((*info->object_id()),((*container_iter) -> installed_homes_)[i].home_servant_->component_instances_[j].object_id_))
{
temp_config = ((*container_iter)->installed_homes_)[i].home_servant_->component_instances_[j].config_;
if (temp_config != 0)
{
// std::cout << temp_config->length() << std::endl;
Components::ConfigValue* value;
for (CORBA::ULong k = 0; k < temp_config->length(); k++)
{
value = (*temp_config)[k];
if (! strcmp ((*temp_config)[k]->name(), "id"))
{
(*temp_config)[k]->value() >>= id;
break;
}
}
}
}
// current call could be the call on a facet
// search for facets
for (unsigned int k = 0; k < ((*container_iter)->installed_homes_)[i].home_servant_->component_instances_[j].ccm_object_executor_->facets_.size(); k++)
{
if (Qedo::compare_OctetSeqs((*info->object_id()),*((*container_iter) -> installed_homes_)[i].home_servant_->reference_to_oid(((*container_iter) -> installed_homes_)[i].home_servant_->component_instances_[j].ccm_object_executor_->facets_[k].facet_ref())))
{
temp_config = ((*container_iter)->installed_homes_)[i].home_servant_->component_instances_[j].config_;
if (temp_config != 0)
{
// std::cout << temp_config->length() << std::endl;
Components::ConfigValue* value;
for (CORBA::ULong k = 0; k < temp_config->length(); k++)
{
value = (*temp_config)[k];
if (! strcmp ((*temp_config)[k]->name(), "id"))
{
(*temp_config)[k]->value() >>= id;
break;
}
}
}