interceptors.cpp
来自「这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用」· C++ 代码 · 共 374 行
CPP
374 行
// interceptors.cpp,v 1.3 2003/11/22 17:33:28 parsons Exp
#include "interceptors.h"
#include "ace/Log_Msg.h"
#include "ace/OS_NS_string.h"
#include "tao/DynamicC.h"
#include "tao/Typecode.h"
ACE_RCSID (Dynamic,
interceptors,
"interceptors.cpp,v 1.3 2003/11/22 17:33:28 parsons Exp")
//const CORBA::ULong request_ctx_id = 0xdead;
//const CORBA::ULong reply_ctx_id = 0xbeef;
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 (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return CORBA::string_dup (this->myname_);
}
void
Echo_Client_Request_Interceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
}
void
Echo_Client_Request_Interceptor::send_poll (
PortableInterceptor::ClientRequestInfo_ptr
ACE_ENV_ARG_DECL_NOT_USED
)
ACE_THROW_SPEC ((CORBA::SystemException))
{
// Do nothing
}
void
Echo_Client_Request_Interceptor::send_request (
PortableInterceptor::ClientRequestInfo_ptr ri
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableInterceptor::ForwardRequest))
{
client_interceptor_check_++;
CORBA::String_var op =
ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
#if 0
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 ()));
#endif /*if 0*/
if (ACE_OS::strcmp (op.in (), "normal") == 0)
{
Dynamic::ParameterList_var paramlist =
ri->arguments (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
CORBA::Long param;
CORBA::ULong i = 0; // index -- explicitly used to avoid
// overloaded operator ambiguity.
paramlist[i].argument >>= param;
#if 0
ACE_DEBUG ((LM_DEBUG,
"The arg is %d\n",
param));
#endif /*if 0*/
}
}
void
Echo_Client_Request_Interceptor::receive_other (
PortableInterceptor::ClientRequestInfo_ptr ri
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableInterceptor::ForwardRequest))
{
client_interceptor_check_++;
CORBA::String_var op = ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
#if 0
ACE_DEBUG ((LM_DEBUG,
"Echo_Client_Request_Interceptor::receive_other "
"from \"%s\"\n",
op.in ()));
#endif /*if 0*/
}
void
Echo_Client_Request_Interceptor::receive_reply (
PortableInterceptor::ClientRequestInfo_ptr ri
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
client_interceptor_check_++;
CORBA::String_var op = ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
#if 0
ACE_DEBUG ((LM_DEBUG,
"Echo_Client_Request_Interceptor::receive_reply "
"from \"%s\"\n",
op.in ()));
#endif /*if 0*/
if (ACE_OS::strcmp (op.in (), "normal") == 0)
{
Dynamic::ParameterList_var paramlist =
ri->arguments (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
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 (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
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 (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
(result_any.in ()) >>= result;
#if 0
ACE_DEBUG ((LM_DEBUG,
"The result of calculate is %d + %d = %d\n",
param1,
param2,
result));
#endif /*if 0*/
}
}
void
Echo_Client_Request_Interceptor::receive_exception (
PortableInterceptor::ClientRequestInfo_ptr ri
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableInterceptor::ForwardRequest))
{
client_interceptor_check_++;
client_interceptor_check_++;
CORBA::String_var op = ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
CORBA::String_var exception_id =
ri->received_exception_id (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
#if 0
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 ()));
#endif
}
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 (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return CORBA::string_dup (this->myname_);
}
void
Echo_Server_Request_Interceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
}
void
Echo_Server_Request_Interceptor::receive_request_service_contexts (
PortableInterceptor::ServerRequestInfo_ptr
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableInterceptor::ForwardRequest))
{
}
void
Echo_Server_Request_Interceptor::receive_request (
PortableInterceptor::ServerRequestInfo_ptr ri
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableInterceptor::ForwardRequest))
{
++server_interceptor_check_;
CORBA::String_var op = ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
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 (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
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_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
ACE_DEBUG ((LM_DEBUG,
"Target most derived interface: %s\n",
tmdi.in ()));
}
void
Echo_Server_Request_Interceptor::send_reply (
PortableInterceptor::ServerRequestInfo_ptr ri
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
++server_interceptor_check_;
CORBA::String_var op = ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_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 (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
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 (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
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 (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
(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
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableInterceptor::ForwardRequest))
{
++server_interceptor_check_;
++server_interceptor_check_;
CORBA::String_var op = ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
ACE_DEBUG ((LM_DEBUG,
"Echo_Server_Request_Interceptor::send_exception "
"from \"%s\"\n",
op.in ()));
CORBA::Any_var any =
ri->sending_exception (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
CORBA::TypeCode_var type = any->type ();
const char *exception_id = type->id (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
ACE_DEBUG ((LM_DEBUG,
"Exception ID = %s\n",
exception_id));
}
void
Echo_Server_Request_Interceptor::send_other (
PortableInterceptor::ServerRequestInfo_ptr
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableInterceptor::ForwardRequest))
{
++server_interceptor_check_;
// Do Nothing
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?