本文整理汇总了C++中portableinterceptor::ClientRequestInfo_ptr::add_request_service_context方法的典型用法代码示例。如果您正苦于以下问题:C++ ClientRequestInfo_ptr::add_request_service_context方法的具体用法?C++ ClientRequestInfo_ptr::add_request_service_context怎么用?C++ ClientRequestInfo_ptr::add_request_service_context使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类portableinterceptor::ClientRequestInfo_ptr
的用法示例。
在下文中一共展示了ClientRequestInfo_ptr::add_request_service_context方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BAD_PARAM
void
Echo_Client_Request_Interceptor::send_request (
PortableInterceptor::ClientRequestInfo_ptr ri)
{
IOP::ServiceContext sc;
sc.context_id = ::service_id;
CORBA::Octet *buf = CORBA::OctetSeq::allocbuf(magic_cookie_len);
ACE_OS::memcpy(buf, magic_cookie, magic_cookie_len);
sc.context_data.replace (magic_cookie_len, magic_cookie_len, buf, 1);
// Add this context to the service context list.
ri->add_request_service_context (sc,
0);
// Check that the request service context can be retrieved.
IOP::ServiceContext_var rc =
ri->get_request_service_context (::service_id);
if (rc->context_data.length() != magic_cookie_len
|| ACE_OS::memcmp(
magic_cookie, rc->context_data.get_buffer(),
magic_cookie_len) != 0
)
{
throw CORBA::BAD_PARAM();
}
Echo_Client_Request_Interceptor::request_count++;
}
示例2:
void
Echo_Client_Request_Interceptor::send_request (
PortableInterceptor::ClientRequestInfo_ptr ri)
{
CORBA::String_var operation =
ri->operation ();
CORBA::Object_var target =
ri->target ();
ACE_DEBUG ((LM_DEBUG,"%C.send_request from %C\n", this->myname_, operation.in ()));
// Make the context to send to the target
IOP::ServiceContext sc;
sc.context_id = ::service_id;
CORBA::ULong string_len = ACE_OS::strlen (request_msg) + 1;
CORBA::Octet *buf = CORBA::OctetSeq::allocbuf (string_len);
ACE_OS::strcpy (reinterpret_cast<char *> (buf), request_msg);
sc.context_data.replace (string_len, string_len, buf, 1);
// Add this context to the service context list.
ri->add_request_service_context (sc, 0);
}
示例3: sizeof
void
TAO_Scheduler::send_request (PortableInterceptor::ClientRequestInfo_ptr request_info)
{
IOP::ServiceContext srv_con;
srv_con.context_id = Client_Interceptor::SchedulingInfo;
srv_con.context_data.length (sizeof (size_t));
RTScheduling::Current::IdType_var id = this->current_->id ();
ACE_OS::memcpy (srv_con.context_data.get_buffer (),
id->get_buffer (),
sizeof (size_t));
request_info->add_request_service_context (srv_con,
0);
}
示例4: sizeof
void
ClientInterceptor::send_request (
PortableInterceptor::ClientRequestInfo_ptr ri)
{
std::cout << "Calling send_request()." << std::endl;
IOP::ServiceContext sc;
sc.context_id = service_ctx_id;
const char user_name[] = "Ron Klein";
std::cout << "User's Name: " << user_name << std::endl;
CORBA::ULong string_len = sizeof (user_name) + 1;
CORBA::Octet *buf = 0;
buf = new CORBA::Octet [string_len];
ACE_OS::strcpy (reinterpret_cast<char*> (buf), user_name);
sc.context_data.replace (string_len, string_len, buf, 1);
// recursive call setup
CORBA::Any *recurse = ri->get_slot(slot);
CORBA::Long x;
*recurse >>= x;
CORBA::Any flag;
if (x == 0)
{
flag <<= 1;
pic->set_slot(slot, flag);
// get server time
std::cout << "Server Time = " << messenger->get_time() << std::endl;
}
// Add this context to the service context list.
ri->add_request_service_context (sc, 0);
// reset recursion test
flag <<= 0;
pic->set_slot(slot,flag);
}
示例5:
void
ClientInterceptor::send_request (
PortableInterceptor::ClientRequestInfo_ptr ri)
{
std::cout << "Calling send_request()." << std::endl;
IOP::ServiceContext sc;
sc.context_id = service_ctx_id;
const CORBA::Long gid = 9007;
std::cout << "GID: " << gid << std::endl;
CORBA::Any gid_as_any;
gid_as_any <<= gid;
sc.context_data = *codec->encode(gid_as_any);
// Add this context to the service context list.
ri->add_request_service_context (sc, false);
}
示例6: catch
void
ClientInterceptor::send_request (
PortableInterceptor::ClientRequestInfo_ptr ri)
{
std::cout << "Calling send_request()." << std::endl;
const CORBA::ULong tagID = 9654;
try
{
IOP::TaggedComponent_var myTag = ri->get_effective_component(tagID);
char *tag =
reinterpret_cast<char*> (myTag->component_data.get_buffer());
std::cout << "IOR Tag is : " << tag << std::endl;
}
catch(...)
{
std::cerr << "Tagged Component not found" << std::endl;
}
IOP::ServiceContext sc;
sc.context_id = service_ctx_id;
const CORBA::Long gid = 9007;
std::cout << "GID: " << gid << std::endl;
CORBA::Any gid_as_any;
gid_as_any <<= gid;
sc.context_data = *codec->encode(gid_as_any);
// Add this context to the service context list.
ri->add_request_service_context (sc, false);
}
示例7:
void
Client_Request_Interceptor::send_request (PortableInterceptor::ClientRequestInfo_ptr ri)
{
// Test TC
test_transport_current (ACE_TEXT ("send_request"));
CORBA::Boolean const response_expected =
ri->response_expected ();
// Oneway?
if (response_expected)
ACE_DEBUG ((LM_DEBUG, ACE_TEXT("CRI (%P|%t) Sending a two-way\n")));
else
ACE_DEBUG ((LM_DEBUG, ACE_TEXT("CRI (%P|%t) Sending a one-way\n")));
// Make the context to send the context to the target
IOP::ServiceContext sc;
sc.context_id = Test::Transport::CurrentTest::ContextTag;
// How long can a number really get?
char temp[32];
{
ACE_GUARD (TAO_SYNCH_MUTEX, monitor, this->lock_);
ACE_OS::sprintf (temp, "%ld", this->requestID_);
++this->requestID_;
}
CORBA::ULong string_len = ACE_OS::strlen (temp) + 1;
CORBA::Octet *buf = CORBA::OctetSeq::allocbuf (string_len);
ACE_OS::strcpy (reinterpret_cast <char *> (buf), temp);
sc.context_data.replace (string_len, string_len, buf, 1);
// Add this context to the service context list.
ri->add_request_service_context (sc, 0);
}
示例8: sizeof
void
ClientInterceptor::send_request (
PortableInterceptor::ClientRequestInfo_ptr ri)
{
std::cout << "Calling send_request()." << std::endl;
IOP::ServiceContext sc;
sc.context_id = service_ctx_id;
const char user_name[] = "Ron Klein";
std::cout << "User's Name: " << user_name << std::endl;
CORBA::ULong string_len = sizeof (user_name) + 1;
CORBA::Octet *buf = 0;
buf = new CORBA::Octet [string_len];
ACE_OS::strcpy (reinterpret_cast<char*> (buf), user_name);
sc.context_data.replace (string_len, string_len, buf, true);
// Add this context to the service context list.
ri->add_request_service_context (sc, false);
}
示例9: seq_buf
void
MIF_Scheduler::send_request (PortableInterceptor::ClientRequestInfo_ptr request_info)
{
CORBA::Policy_var sched_param = current_->scheduling_parameter ();
MIF_Scheduling::SegmentSchedulingParameterPolicy_var sched_param_var =
MIF_Scheduling::SegmentSchedulingParameterPolicy::_narrow (sched_param.in ());
IOP::ServiceContext srv_con;
srv_con.context_id = Client_Interceptor::SchedulingInfo;
RTScheduling::Current::IdType_var guid = current_->id ();
int guid_length = guid->length ();
CORBA::OctetSeq seq_buf (guid_length);
seq_buf.length (seq_buf.maximum ());
ACE_OS::memcpy (seq_buf.get_buffer (),
guid->get_buffer (),
guid_length);
int cxt_data_length = sizeof (int) + guid_length;
srv_con.context_data.length (cxt_data_length);
int i = 0;
for (;i < guid_length;i++)
{
srv_con.context_data [i] = seq_buf [i];
}
int importance = sched_param_var->importance ();
CORBA::OctetSeq int_buf (sizeof (importance));
int_buf.length (int_buf.maximum ());
ACE_OS::memcpy (int_buf.get_buffer (),
&importance,
sizeof (importance));
int j = 0;
for (;i < cxt_data_length;i++)
{
srv_con.context_data [i] = int_buf [j++];
}
request_info->add_request_service_context (srv_con,
0);
lock_.acquire ();
if (ready_que_.message_count () > 0)
{
int priority;
ACE_hthread_t current;
ACE_Thread::self (current);
if (ACE_Thread::getprio (current, priority) == -1)
return;
ACE_DEBUG ((LM_DEBUG,
"Initial thread priority is %d %d\n",
priority,
ACE_DEFAULT_THREAD_PRIORITY));
RTCORBA::Priority rtpriority;
RTCORBA::PriorityMapping* pm = this->mapping_manager_->mapping ();
if (pm->to_CORBA(priority + 1, rtpriority))
{
current_->the_priority (rtpriority);
ACE_Thread::self (current);
if (ACE_Thread::getprio (current, priority) == -1)
return;
ACE_DEBUG ((LM_DEBUG,
"Bumped thread priority is %d\n",
priority));
}
DT* run_dt = 0;
ACE_Message_Block* msg = 0;
ready_que_.dequeue_head (msg);
run_dt = dynamic_cast<DT*> (msg);
run_dt->resume ();
free_que_.enqueue_prio (run_dt);
}
lock_.release ();
}
示例10:
void
EDF_Scheduler::send_request (PortableInterceptor::ClientRequestInfo_ptr ri)
{
int int_guid;
RTScheduling::Current::IdType_var guid = this->current_->id ();
ACE_OS::memcpy (&int_guid,
guid->get_buffer (),
guid->length ());
DSUI_EVENT_LOG (EDF_SCHED_FAM, ENTER_CLIENT_SCHED_TIME, int_guid, 0, 0);
Kokyu::Svc_Ctxt_DSRT_QoS sc_qos;
CORBA::String_var operation = ri->operation ();
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
"(%t|%T): send_request "
"from \"%s\"\n",
operation.in ()));
#endif
// Make the context to send the context to the target
IOP::ServiceContext sc;
sc.context_id = Client_Interceptor::SchedulingInfo;
CORBA::Policy_var sched_policy =
this->current_->scheduling_parameter();
CORBA::Long importance;
TimeBase::TimeT deadline;
TimeBase::TimeT period;
int task_id=-1;
if (CORBA::is_nil (sched_policy))
{
//24 hrs from now - infinity
ACE_Time_Value deadline_tv = ACE_OS::gettimeofday () + ACE_Time_Value (24*60*60,0);
deadline = deadline_tv.sec () * 10000000 + deadline_tv.usec () * 10; //100s of nanoseconds for TimeBase::TimeT
importance = 0;
period = 0; //set period 0 as default.
// task_id = ID_BEGIN ++;
}
else
{
EDF_Scheduling::SchedulingParameterPolicy_var sched_param_policy =
EDF_Scheduling::SchedulingParameterPolicy::_narrow (sched_policy);
EDF_Scheduling::SchedulingParameter_var sched_param = sched_param_policy->value ();
deadline = sched_param->deadline;
importance = sched_param->importance;
period = sched_param->period;
task_id = sched_param->task_id;
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
"(%t|%T): send_request guid = %d\n",
int_guid));
#endif
}
//Fill the guid in the SC Qos struct
sc_qos.guid.length (guid->length ());
guid_copy (sc_qos.guid, guid.in ());
sc_qos.deadline = deadline;
sc_qos.importance = importance;
sc_qos.task_id = task_id;
sc_qos.period = period;
CORBA::Any sc_qos_as_any;
sc_qos_as_any <<= sc_qos;
CORBA::OctetSeq_var cdtmp = codec_->encode (sc_qos_as_any);
sc.context_data = cdtmp.in ();
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%t|%T): send_request : about to add sched SC\n")));
#endif
// Add this context to the service context list.
ri->add_request_service_context (sc, 0);
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%t|%T): send_request : ")
ACE_TEXT ("about to call scheduler to inform block\n")
));
#endif
DSUI_EVENT_LOG (EDF_SCHED_FAM, CALL_KOKYU_DISPATCH_UPDATE_SCHEDULE,
int_guid, 0, 0);
kokyu_dispatcher_->update_schedule (guid.in (),
Kokyu::BLOCK);
DSUI_EVENT_LOG (EDF_SCHED_FAM, LEAVE_KOKYU_DISPATCH_UPDATE_SCHEDULE,
int_guid,0,0);
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%t|%T): send_request interceptor done\n")));
#endif
DSUI_EVENT_LOG (EDF_SCHED_FAM, LEAVE_CLIENT_SCHED_TIME, int_guid, 0, 0);
//.........这里部分代码省略.........
示例11:
void
Echo_Client_Request_Interceptor::send_request (
PortableInterceptor::ClientRequestInfo_ptr ri)
{
if (CORBA::is_nil (this->orb_.in ()))
{
int argc = 0;
ACE_TCHAR **argv = 0;
this->orb_ = CORBA::ORB_init (argc, argv,
this->orb_id_.in ());
}
CORBA::String_var operation = ri->operation ();
CORBA::Object_var target = ri->target ();
CORBA::String_var ior =
this->orb_->object_to_string (target.in ());
#if 0
ACE_DEBUG ((LM_DEBUG,
"%C.send_request "
"from \"%C\" on object: %C\n",
this->myname_,
operation.in (),
ior.in ()));
#endif /*if 0*/
// Populate target member of the ClientRequestInfo.
// Make the context to send the context to the target
IOP::ServiceContext sc;
sc.context_id = ::service_id;
CORBA::ULong string_len = ACE_OS::strlen (request_msg) + 1;
CORBA::Octet *buf = CORBA::OctetSeq::allocbuf (string_len);
ACE_OS::strcpy (reinterpret_cast<char *> (buf), request_msg);
sc.context_data.replace (string_len, string_len, buf, 1);
// Add this context to the service context list.
ri->add_request_service_context (sc, 0);
// Check that the request service context can be retrieved.
IOP::ServiceContext_var sc2 =
ri->get_request_service_context (::service_id);
const char *buf2 =
reinterpret_cast<const char *> (sc2->context_data.get_buffer ());
if (ACE_OS::strcmp (buf2, request_msg) != 0)
{
ACE_ERROR ((LM_ERROR,
"ERROR: Expected request service context to be: %C.\n"
" Got: %C\n",
request_msg,
buf2));
}
}
示例12:
void
MIF_Scheduler::send_request (PortableInterceptor::ClientRequestInfo_ptr ri)
{
Kokyu::Svc_Ctxt_DSRT_QoS sc_qos;
CORBA::String_var operation = ri->operation ();
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
"(%t|%T): send_request "
"from \"%s\"\n",
operation.in ()));
#endif
// Make the context to send the context to the target
IOP::ServiceContext sc;
sc.context_id = Client_Interceptor::SchedulingInfo;
CORBA::Policy_var sched_policy =
this->current_->scheduling_parameter();
RTScheduling::Current::IdType_var guid = this->current_->id ();
/*
ACE_OS::memcpy (&guid,
guid->get_buffer (),
guid->length ());
*/
CORBA::Short importance;
if (CORBA::is_nil (sched_policy.in ()))
{
importance = 0;
}
else
{
MIF_Scheduling::SchedulingParameterPolicy_var sched_param_policy =
MIF_Scheduling::SchedulingParameterPolicy::_narrow (sched_policy.in ());
MIF_Scheduling::SchedulingParameter_var sched_param = sched_param_policy->value ();
importance = sched_param->importance;
#ifdef KOKYU_DSRT_LOGGING
int int_guid;
ACE_OS::memcpy (&int_guid,
guid->get_buffer (),
guid->length ());
ACE_DEBUG ((LM_DEBUG,
"(%t|%T): send_request importance from current = %d, guid = %d\n",
importance, int_guid));
#endif
//Fill the guid in the SC Qos struct
sc_qos.guid.length (guid->length ());
guid_copy (sc_qos.guid, guid.in ());
sc_qos.importance = importance;
CORBA::Any sc_qos_as_any;
sc_qos_as_any <<= sc_qos;
CORBA::OctetSeq_var cdtmp = codec_->encode (sc_qos_as_any);
sc.context_data = cdtmp.in ();
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%t|%T): send_request : about to add sched SC\n")));
#endif
// Add this context to the service context list.
ri->add_request_service_context (sc, 0);
}
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%t|%T): send_request : ")
ACE_TEXT ("about to call scheduler to inform block\n")
));
#endif
kokyu_dispatcher_->update_schedule (guid.in (),
Kokyu::BLOCK);
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%t|%T): send_request interceptor done\n")));
#endif
}