// $Id$ #include "interceptors.h" #include "tao/PI/ClientRequestInfoC.h" #include "tao/PI_Server/ServerRequestInfoC.h" #include "tao/AnyTypeCode/AnyTypeCode_Adapter_Impl.h" #include "tao/AnyTypeCode/DynamicC.h" #include "tao/AnyTypeCode/TypeCode.h" #include "ace/Log_Msg.h" #include "ace/OS_NS_string.h" ACE_RCSID (Dynamic, interceptors, "$Id$") const char *request_msg = "The Echo_Request_Interceptor request message"; const char *reply_msg = "The Echo_Request_Interceptor reply message"; CORBA::ULong Echo_Client_Request_Interceptor::client_interceptor_check_ = 0; CORBA::ULong Echo_Server_Request_Interceptor::server_interceptor_check_ = 0; Echo_Client_Request_Interceptor::Echo_Client_Request_Interceptor (void) : myname_ ("Echo_Client_Interceptor") { } Echo_Client_Request_Interceptor::~Echo_Client_Request_Interceptor () { } char * Echo_Client_Request_Interceptor::name (void) { return CORBA::string_dup (this->myname_); } void Echo_Client_Request_Interceptor::destroy (void) { } void Echo_Client_Request_Interceptor::send_poll ( PortableInterceptor::ClientRequestInfo_ptr ) { // Do nothing } void Echo_Client_Request_Interceptor::send_request ( PortableInterceptor::ClientRequestInfo_ptr ri) { CORBA::String_var op = ri->operation (); // Do not count the _is_a calls if (ACE_OS::strcmp (op.in (), "_is_a") != 0) { client_interceptor_check_++; } ACE_DEBUG ((LM_DEBUG, "Echo_Client_Request_Interceptor::send_request\n")); ACE_DEBUG ((LM_DEBUG, "Echo_Client_Request_Interceptor::send_request from " "\"%s\"\n", op.in ())); if (ACE_OS::strcmp (op.in (), "normal") == 0) { Dynamic::ParameterList_var paramlist = ri->arguments (); CORBA::Long param; CORBA::ULong i = 0; // index -- explicitly used to avoid // overloaded operator ambiguity. paramlist[i].argument >>= param; ACE_DEBUG ((LM_DEBUG, "The arg is %d\n", param)); } } void Echo_Client_Request_Interceptor::receive_other ( PortableInterceptor::ClientRequestInfo_ptr ri) { CORBA::String_var op = ri->operation (); // Do not count the _is_a calls if (ACE_OS::strcmp (op.in (), "_is_a") != 0) { client_interceptor_check_++; } ACE_DEBUG ((LM_DEBUG, "Echo_Client_Request_Interceptor::receive_other " "from \"%s\"\n", op.in ())); } void Echo_Client_Request_Interceptor::receive_reply ( PortableInterceptor::ClientRequestInfo_ptr ri) { CORBA::String_var op = ri->operation (); // Do not count the _is_a calls if (ACE_OS::strcmp (op.in (), "_is_a") != 0) { client_interceptor_check_++; } ACE_DEBUG ((LM_DEBUG, "Echo_Client_Request_Interceptor::receive_reply " "from \"%s\"\n", op.in ())); if (ACE_OS::strcmp (op.in (), "normal") == 0) { Dynamic::ParameterList_var paramlist = ri->arguments (); CORBA::Long param; CORBA::ULong i = 0; // index -- explicitly used to avoid // overloaded operator ambiguity. paramlist[i].argument >>= param; } else if (ACE_OS::strcmp (op.in (), "calculate") == 0) { Dynamic::ParameterList_var paramlist = ri->arguments (); CORBA::Long param1, param2, result; CORBA::ULong i = 0; // index -- explicitly used to avoid // overloaded operator ambiguity. paramlist[i++].argument >>= param1; paramlist[i].argument >>= param2; CORBA::Any_var result_any = ri->result (); (result_any.in ()) >>= result; ACE_DEBUG ((LM_DEBUG, "The result of calculate is %d + %d = %d\n", param1, param2, result)); } } void Echo_Client_Request_Interceptor::receive_exception ( PortableInterceptor::ClientRequestInfo_ptr ri) { CORBA::String_var op = ri->operation (); // Do not count the _is_a calls if (ACE_OS::strcmp (op.in (), "_is_a") != 0) { client_interceptor_check_++; } CORBA::String_var exception_id = ri->received_exception_id (); ACE_DEBUG ((LM_DEBUG, "Echo_Client_Request_Interceptor::received_exception " "from \"%s\"\n", op.in ())); ACE_DEBUG ((LM_DEBUG, "Exception ID = %s\n", exception_id.in ())); } Echo_Server_Request_Interceptor::Echo_Server_Request_Interceptor (void) : myname_ ("Echo_Server_Interceptor") { } Echo_Server_Request_Interceptor::~Echo_Server_Request_Interceptor () { } char * Echo_Server_Request_Interceptor::name (void) { return CORBA::string_dup (this->myname_); } void Echo_Server_Request_Interceptor::destroy (void) { } void Echo_Server_Request_Interceptor::receive_request_service_contexts ( PortableInterceptor::ServerRequestInfo_ptr) { } void Echo_Server_Request_Interceptor::receive_request ( PortableInterceptor::ServerRequestInfo_ptr ri) { CORBA::String_var op = ri->operation (); // Do not count the _is_a calls if (ACE_OS::strcmp (op.in (), "_is_a") != 0) { ++server_interceptor_check_; } PortableInterceptor::ObjectId_var test_oid = ri->object_id (); ACE_DEBUG ((LM_DEBUG, "Echo_Server_Request_Interceptor::receive_request from \"%s\"\n", op.in ())); if (ACE_OS::strcmp (op.in (), "normal") == 0) { Dynamic::ParameterList_var paramlist = ri->arguments (); CORBA::Long param; CORBA::ULong i = 0; // index -- explicitly used to avoid // overloaded operator ambiguity. paramlist[i].argument >>= param; ACE_DEBUG ((LM_DEBUG, "The arg is %d\n", param)); } CORBA::String_var tmdi = ri->target_most_derived_interface (); ACE_DEBUG ((LM_DEBUG, "Target most derived interface: %s\n", tmdi.in ())); } void Echo_Server_Request_Interceptor::send_reply ( PortableInterceptor::ServerRequestInfo_ptr ri) { CORBA::String_var op = ri->operation (); // Do not count the _is_a calls if (ACE_OS::strcmp (op.in (), "_is_a") != 0) { ++server_interceptor_check_; } ACE_DEBUG ((LM_DEBUG, "Echo_Server_Request_Interceptor::send_reply from \"%s\"\n", op.in ())); if (ACE_OS::strcmp (op.in (), "normal") == 0) { Dynamic::ParameterList_var paramlist = ri->arguments (); CORBA::Long param; CORBA::ULong i = 0; // index -- explicitly used to avoid // overloaded operator ambiguity. paramlist[i].argument >>= param; ACE_DEBUG ((LM_DEBUG, "The arg is %d\n", param)); } if (ACE_OS::strcmp (op.in (), "calculate") == 0) { Dynamic::ParameterList_var paramlist = ri->arguments (); CORBA::Long param1, param2, result = 0; CORBA::ULong i = 0; // index -- explicitly used to avoid // overloaded operator ambiguity. paramlist[i++].argument >>= param1; paramlist[i].argument >>= param2; CORBA::Any_var result_any = ri->result (); (result_any.in ()) >>= result; ACE_DEBUG ((LM_DEBUG, "The result of calculate is %d + %d = %d\n", param1, param2, result)); } } void Echo_Server_Request_Interceptor::send_exception ( PortableInterceptor::ServerRequestInfo_ptr ri) { CORBA::String_var op = ri->operation (); // Do not count the _is_a calls if (ACE_OS::strcmp (op.in (), "_is_a") != 0) { ++server_interceptor_check_; } ACE_DEBUG ((LM_DEBUG, "Echo_Server_Request_Interceptor::send_exception " "from \"%s\"\n", op.in ())); CORBA::Any_var any = ri->sending_exception (); CORBA::TypeCode_var type = any->type (); const char *exception_id = type->id (); ACE_DEBUG ((LM_DEBUG, "Exception ID = %s\n", exception_id)); } void Echo_Server_Request_Interceptor::send_other ( PortableInterceptor::ServerRequestInfo_ptr) { ++server_interceptor_check_; // Do Nothing }