Previous Table of Contents Next


16.7 OMG IDL for the DCE CIOP Module

   This section shows the DCE_CIOP module and DCE_CIOP additions to the IOP module.

   module DCE_CIOP {

   struct InvokeRequestHeader { boolean byte_order; IOP::ServiceContextList service_context; sequence <octet> object_key; string operation; CORBA::Principal principal;

   // in and inout parameters follow };

   enum InvokeResponseStatus { INVOKE_NO_EXCEPTION, INVOKE_USER_EXCEPTION, INVOKE_SYSTEM_EXCEPTION, INVOKE_LOCATION_FORWARD, INVOKE_TRY_AGAIN

   };

   struct InvokeResponseHeader { boolean byte_order; IOP::ServiceContextList service_context; InvokeResponseStatus status;

   // if status = INVOKE_NO_EXCEPTION,

   // result then inouts and outs follow

   // if status = INVOKE_USER_EXCEPTION or // INVOKE_SYSTEM_EXCEPTION, an exception follows

   // if status = INVOKE_LOCATION_FORWARD, an

   // IOP::IOR follows }; struct LocateRequestHeader {

   boolean byte_order; sequence <octet> object_key; string operation;

   // no body follows };

   enum LocateResponseStatus { LOCATE_UNKNOWN_OBJECT, LOCATE_OBJECT_HERE, LOCATE_LOCATION_FORWARD, LOCATE_TRY_AGAIN };

   struct LocateResponseHeader { boolean byte_order; LocateResponseStatus status;

   // if status = LOCATE_LOCATION_FORWARD, an // IOP::IOR follows };

   const IOP::ComponentId TAG_DCE_STRING_BINDING = 100;

   const IOP::ComponentId TAG_DCE_BINDING_NAME = 101;

   struct BindingNameComponent { unsigned long entry_name_syntax; string entry_name; string object_uuid;

   };

   const IOP::ComponentId TAG_DCE_NO_PIPES = 102; };

   module IOP { const ComponentId TAG_COMPLETE_OBJECT_KEY = 5;

   const ComponentId TAG_ENDPOINT_ID_POSITION = 6;

   struct EndpointIdPositionComponent { unsigned short begin; unsigned short end;

   };

   const ComponentId TAG_LOCATION_POLICY = 12;

   // IDL does not support octet constants #define LOCATE_NEVER 0 #define LOCATE_OBJECT 1 #define LOCATE_OPERATION 2 #define LOCATE_ALWAYS 3

   };