Public Member Functions | Static Public Member Functions

TAO_AMI_Arguments_Converter_Impl Class Reference

TAO_AMI_Arguments_Converter_Impl. More...

#include <AMI_Arguments_Converter_Impl.h>

List of all members.

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)

Detailed Description

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.


Member Function Documentation

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);
}


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines