Previous Table of Contents Next


7.2 Request Operations

   The request operations (except create_request) are defined in terms of the Request pseudo-object. The Request routines use the NVList definition defined in the preceding section.

   module CORBA {

   native OpaqueValue;

   interface Request { // PIDL

   void add_arg ( void get_response () raises (WrongTransaction);

in Identifier

name,

// argument name

in TypeCode arg_type, // argument datatype
in OpaqueValue value, // argument value to be added
in long len, // length/count of argument value
in Flags arg_flags // argument flags
);
void invoke (
in Flags invoke_flags // invocation flags
);
void delete ();
void send (
in Flags invoke_flags // invocation flags
);

   boolean poll_response();

   Object sendp( );

   void prepare(in Object p);

   void sendc(in Object handler); }; };

   In IDL, The native type OpaqueValue is used to identify the type of the implementation language representation of the value that is to be passed as a parameter. For example in the C language this is the C language type (void *). Each language mapping specifies what OpaqueValue maps to in that specific language.

   For each Request pseudo-object instance, only one call to either the invoke or the send operations is legal during the lifetime of the Request object. In addition, once a Request object was passed to one of the send_multiple_requests_* operations, neither invoke nor send can be called, nor can it be passed in another invocation of send_multiple_request_* operation.Violations raise BAD_INV_ORDER with standard minor code 5.