本文整理汇总了C++中portableinterceptor::ClientRequestInfo_ptr类的典型用法代码示例。如果您正苦于以下问题:C++ ClientRequestInfo_ptr类的具体用法?C++ ClientRequestInfo_ptr怎么用?C++ ClientRequestInfo_ptr使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ClientRequestInfo_ptr类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void
EDF_Scheduler::receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri)
{
int int_guid;
DSUI_EVENT_LOG (EDF_SCHED_FAM, ENTER_RECEIVE_REPLY, 0, 0, 0);
RTScheduling::Current::IdType guid;
CORBA::String_var operation = ri->operation ();
CORBA::Object_var target = ri->target ();
ACE_CString opname = operation.in ();
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
"(%t|%T):receive_reply from "
"\"%s\"\n",
opname.c_str ()));
#endif
// Check that the reply service context was received as
// expected.
IOP::ServiceContext_var sc =
ri->get_reply_service_context (Client_Interceptor::SchedulingInfo);
CORBA::Long importance;
TimeBase::TimeT deadline;
if (sc.ptr () == 0)
{
ACE_DEBUG ((LM_DEBUG, "service context was not filled\n"));
//24 hrs from now - infinity
ACE_Time_Value deadline_tv = ACE_OS::gettimeofday () + ACE_Time_Value (24*60*60,0);
deadline = deadline_tv.sec ()*1000000 + deadline_tv.usec ()*10; //100s of nanoseconds for TimeBase::TimeT
importance = 0;
}
else
{
CORBA::OctetSeq oc_seq = CORBA::OctetSeq (sc->context_data.length (),
sc->context_data.length (),
sc->context_data.get_buffer (),
0);
//Don't store in a _var, since >>= returns a pointer to an internal buffer
//and we are not supposed to free it.
Kokyu::Svc_Ctxt_DSRT_QoS* sc_qos_ptr;
CORBA::Any sc_qos_as_any;
CORBA::Any_var scqostmp = codec_->decode (oc_seq);
sc_qos_as_any = scqostmp.in ();
sc_qos_as_any >>= sc_qos_ptr;
deadline = sc_qos_ptr->deadline;
importance = sc_qos_ptr->importance;
guid.length (sc_qos_ptr->guid.length ());
guid_copy (guid, sc_qos_ptr->guid);
ACE_DEBUG ((LM_DEBUG,
"(%t|%T):Importance = %d in recvd service context\n",
importance));
}
ACE_OS::memcpy (&int_guid,
guid.get_buffer (),
guid.length ());
EDF_Scheduler_Traits::QoSDescriptor_t qos;
qos.deadline_ = qos.importance_ = importance;
qos.deadline_ = deadline;
this->kokyu_dispatcher_->schedule (guid, qos);
DSUI_EVENT_LOG (EDF_SCHED_FAM, EXIT_RECEIVE_REPLY, int_guid, 0, 0);
}
示例2: 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++;
}
示例3:
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);
}
示例4: catch
void
Client_Request_Interceptor::receive_other (
PortableInterceptor::ClientRequestInfo_ptr ri)
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("CRI: in receive_other\n")));
CORBA::Boolean response_expected =
ri->response_expected ();
// Oneway
if (!response_expected)
return;
PortableInterceptor::ReplyStatus reply_status;
try
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("CRI: in receive_other, before reply_status\n")));
reply_status = ri->reply_status ();
ACE_UNUSED_ARG (reply_status);
}
catch(CORBA::BAD_INV_ORDER const &e)
{
e._tao_print_exception ("CRI: exception");
}
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("CRI: in receive_other, after reply_status\n")));
}
示例5:
void
MIF_Scheduler::receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri)
{
RTScheduling::Current::IdType guid;
CORBA::Short importance=0;
CORBA::String_var operation = ri->operation ();
CORBA::Object_var target = ri->target ();
ACE_CString opname = operation.in ();
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
"(%t|%T):receive_reply from "
"\"%s\"\n",
opname.c_str ()));
#endif
// Check that the reply service context was received as
// expected.
IOP::ServiceContext_var sc =
ri->get_reply_service_context (Client_Interceptor::SchedulingInfo);
if (sc.ptr () == 0)
{
importance = 0;
}
else
{
CORBA::OctetSeq oc_seq = CORBA::OctetSeq (sc->context_data.length (),
sc->context_data.length (),
sc->context_data.get_buffer (),
0);
//Don't store in a _var, since >>= returns a pointer to an internal buffer
//and we are not supposed to free it.
Kokyu::Svc_Ctxt_DSRT_QoS* sc_qos_ptr;
CORBA::Any sc_qos_as_any;
CORBA::Any_var scqostmp = codec_->decode (oc_seq);
sc_qos_as_any = scqostmp.in ();
sc_qos_as_any >>= sc_qos_ptr;
importance = sc_qos_ptr->importance;
guid.length (sc_qos_ptr->guid.length ());
guid_copy (guid, sc_qos_ptr->guid);
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
"(%t|%T): Importance = %d in recvd service context\n",
importance ));
#endif
}
MIF_Scheduler_Traits::QoSDescriptor_t qos;
qos.importance_ = importance;
this->kokyu_dispatcher_->schedule (guid, qos);
}
示例6: 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);
}
示例7: 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);
}
示例8:
void
Client_Request_Interceptor::receive_exception (
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 ());
}
ACE_DEBUG ((LM_DEBUG,
"Client_Request_Interceptor::receive_exception (%s)\n",
ri->received_exception_id ()));
if (ACE_OS::strcmp (ri->received_exception_id (),
"IDL:omg.org/CORBA/TRANSIENT:1.0") == 0)
{
interceptor_invoked = true;
}
}
示例9: 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);
}
示例10:
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);
}
示例11: ForwardRequest
void
Client_Request_Interceptor::receive_exception (
PortableInterceptor::ClientRequestInfo_ptr ri)
{
++this->exception_count_;
ACE_DEBUG ((LM_DEBUG, "received exception %d\n",
this->exception_count_));
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 ());
}
if (this->exception_count_ == 1)
{
ACE_DEBUG ((LM_DEBUG, "forwarding client to the second server\n"));
CORBA::Object_var first_forward =
this->orb_->string_to_object (this->first_forward_str_.in ());
// Notice that this is not a permanent forward.
throw PortableInterceptor::ForwardRequest (first_forward.in ());
}
else if (this->exception_count_ == 2)
{
ACE_DEBUG ((LM_DEBUG, "forwarding client to the third server\n"));
CORBA::Object_var second_forward =
this->orb_->string_to_object (this->second_forward_str_.in ());
// Notice that this is not a permanent forward.
throw PortableInterceptor::ForwardRequest (second_forward.in ());
}
else if (this->exception_count_ == 3)
{
CORBA::Any_var ex = ri->received_exception ();
CORBA::TypeCode_var tc;
const char * id = 0;
tc = ex->type ();
id = tc->id ();
if (ACE_OS_String::strcmp (id,
"IDL:omg.org/CORBA/TRANSIENT:1.0") == 0)
throw ::CORBA::TRANSIENT (CORBA::OMGVMCID | 2, CORBA::COMPLETED_NO);
}
}
示例12: ForwardRequest
void
Client_Request_Interceptor::send_request (
PortableInterceptor::ClientRequestInfo_ptr ri)
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("CRI: in send_request\n")));
++this->request_count_;
CORBA::Boolean response_expected =
ri->response_expected ();
if (!response_expected) // A one-way request.
return;
// Request 1 -- non-forwarded
// Request 2 -- forwarded by this interception point.
// Request 3 -- non-forwarded
if (this->request_count_ == 2)
{
if (CORBA::is_nil (this->orb_.in ()))
{
int argc = 0;
char **const argv= 0;
this->orb_ = CORBA::ORB_init (argc,
argv,
this->orb_id_.in ());
}
CORBA::Object_var forward =
this->orb_->string_to_object (this->forward_str_.in ());
CORBA::String_var forward_str =
this->orb_->object_to_string (forward.in ());
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("CRI: request %d will be forwarded via send_request()\n"),
this->request_count_));
// Notice that this is not a permanent forward.
throw PortableInterceptor::ForwardRequest (forward.in ());
}
}
示例13:
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);
}
示例14:
void
Echo_Client_Request_Interceptor::send_request (
PortableInterceptor::ClientRequestInfo_ptr ri)
{
CORBA::String_var operation = ri->operation ();
if (ACE_OS::strcmp (operation.in (), "shutdown") == 0) {
return;
}
//send to another
isRecursive ++ ;
if (isRecursive%2 == 1 )
{
if (isRecursive == 3) {
ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t)Echo_Client_Request_Interceptor::send_request(%d) ")
ACE_TEXT ("shutdown server 1 now. \n"), isRecursive));
server1_shutdownObj->shutdown();
}
CORBA::Object_var helloObj = orb->string_to_object(server2_ior);
Demo::HelloWorld_var hello = Demo::HelloWorld::_narrow(helloObj.in ());
if (CORBA::is_nil(hello.in ())) {
ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%P|%t)Echo_Client_Request_Interceptor::send_request(%d) ")
ACE_TEXT ("hello reference is nil.\n"), isRecursive));
}
else {
ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t)Echo_Client_Request_Interceptor::send_request(%d) ")
ACE_TEXT ("call server2 HelloWorld::sayHello() \n"), isRecursive));
const char* pMsg = " server2 say Hello";
hello->sayHello(pMsg) ;
}
}
}
示例15: 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);
}