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++; }
void Echo_Client_Request_Interceptor::receive_other ( PortableInterceptor::ClientRequestInfo_ptr ri) { // 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::other_count++; }
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)); } }
void Echo_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 ()); } 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.received_exception " "from \"%C\" on object: %C\n", this->myname_, operation.in (), ior.in ())); #endif /*if 0*/ // Check that the reply service context was received as // expected. IOP::ServiceContext_var sc = ri->get_reply_service_context (::service_id); const char *buf = reinterpret_cast<const char *> (sc->context_data.get_buffer ()); #if 0 ACE_DEBUG ((LM_DEBUG, " Received reply service context: %C\n", buf)); #endif /*if 0*/ if (ACE_OS::strcmp (buf, reply_msg) != 0) { ACE_ERROR ((LM_ERROR, "ERROR: Expected reply service context to be: %C\n", reply_msg)); } // Check that no one has messed with the request service context. 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)); } }