TAO_AMI_Arguments_Converter_Impl. More...
#include <AMI_Arguments_Converter_Impl.h>
Public Member Functions | |
| virtual void | convert_request (TAO_ServerRequest &server_request, TAO::Argument *const args[], size_t nargs) |
| virtual void | dsi_convert_request (TAO_ServerRequest &server_request, TAO_OutputCDR &output) |
| virtual void | convert_reply (TAO_ServerRequest &server_request, TAO::Argument *const args[], size_t nargs) |
| virtual void | dsi_convert_reply (TAO_ServerRequest &server_request, TAO_InputCDR &input) |
| virtual void | handle_corba_exception (TAO_ServerRequest &server_request, CORBA::Exception *exception) |
Static Public Member Functions | |
| static int | Initializer (void) |
TAO_AMI_Arguments_Converter_Impl.
This class provides the implementation to expand the DII arguments in NVList to the list of arguments.
Definition at line 40 of file AMI_Arguments_Converter_Impl.h.
| void TAO_AMI_Arguments_Converter_Impl::convert_reply | ( | TAO_ServerRequest & | server_request, | |
| TAO::Argument *const | args[], | |||
| size_t | nargs | |||
| ) | [virtual] |
Definition at line 63 of file AMI_Arguments_Converter_Impl.cpp.
{
if (server_request.operation_details ()->reply_dispatcher ())
{
TAO_OutputCDR output;
for (CORBA::ULong j = 0; j < nargs; ++j)
{
if (!(args[j]->marshal (output)))
{
TAO_OutputCDR::throw_skel_exception (errno);
}
}
TAO_InputCDR input (output);
this->dsi_convert_reply (server_request, input);
}
}
| void TAO_AMI_Arguments_Converter_Impl::convert_request | ( | TAO_ServerRequest & | server_request, | |
| TAO::Argument *const | args[], | |||
| size_t | nargs | |||
| ) | [virtual] |
Definition at line 16 of file AMI_Arguments_Converter_Impl.cpp.
{
// The AMI requests on client side just has the in and inout argumenst,
// Since the argument list in the client side is used by server side
// in collocation case and the server expects the full list of arguments
// and not just the inout arguments we need to expand the client arguments
// to be list of Arguments.
TAO_OutputCDR output;
this->dsi_convert_request (server_request, output);
TAO_InputCDR input (output);
for (CORBA::ULong j = 1; j < nargs; ++j)
{
if (!(args[j]->demarshal (input)))
{
TAO_InputCDR::throw_skel_exception (errno);
}
}
TAO_Operation_Details* details
= const_cast <TAO_Operation_Details*> (server_request.operation_details ());
details->use_stub_args (false);
}
| void TAO_AMI_Arguments_Converter_Impl::dsi_convert_reply | ( | TAO_ServerRequest & | server_request, | |
| TAO_InputCDR & | input | |||
| ) | [virtual] |
Definition at line 84 of file AMI_Arguments_Converter_Impl.cpp.
{
if (server_request.operation_details ()->reply_dispatcher ())
{
TAO_Pluggable_Reply_Params params (0);
params.reply_status (GIOP::NO_EXCEPTION);
params.input_cdr_ = &input;
server_request.operation_details ()->
reply_dispatcher ()->dispatch_reply (params);
}
}
| void TAO_AMI_Arguments_Converter_Impl::dsi_convert_request | ( | TAO_ServerRequest & | server_request, | |
| TAO_OutputCDR & | output | |||
| ) | [virtual] |
Definition at line 46 of file AMI_Arguments_Converter_Impl.cpp.
{
// The AMI requests on client side just has the in and inout arguments
CORBA::ULong const nrarg = server_request.operation_details ()->args_num ();
for (CORBA::ULong i = 1; i < nrarg; ++i)
{
if (!(server_request.operation_details ()->args()[i])->marshal (output))
{
throw ::CORBA::BAD_PARAM ();
}
}
}
| void TAO_AMI_Arguments_Converter_Impl::handle_corba_exception | ( | TAO_ServerRequest & | server_request, | |
| CORBA::Exception * | exception | |||
| ) | [virtual] |
Definition at line 99 of file AMI_Arguments_Converter_Impl.cpp.
{
TAO_OutputCDR output;
TAO_Pluggable_Reply_Params params (0);
exception->_tao_encode (output);
if (CORBA::SystemException::_downcast (exception) != 0)
{
params.reply_status (GIOP::SYSTEM_EXCEPTION);
}
else
{
params.reply_status (GIOP::USER_EXCEPTION);
}
TAO_InputCDR input (output);
params.input_cdr_ = &input;
server_request.operation_details ()->
reply_dispatcher ()->dispatch_reply (params);
}
| int TAO_AMI_Arguments_Converter_Impl::Initializer | ( | void | ) | [static] |
Definition at line 125 of file AMI_Arguments_Converter_Impl.cpp.
{
return ACE_Service_Config::process_directive (
ace_svc_desc_TAO_AMI_Arguments_Converter_Impl);
}
1.7.0