Previous Table of Contents Next


15.10.1 GIOP Module


   module GIOP { // IDL extended for version 1.1, 1.2, and 1.3

   struct Version { octet major; octet minor;

   };

   #ifndef GIOP_1_1 // GIOP 1.0 enum MsgType_1_0{ // rename from MsgType

   Request, Reply, CancelRequest,LocateRequest, LocateReply,CloseConnection, MessageError};

   #else // GIOP 1.1 enum MsgType_1_1{

   Request, Reply, CancelRequest,LocateRequest, LocateReply,CloseConnection, MessageError,Fragment // GIOP 1.1 addition

   }; #endif

   // GIOP 1.0

   struct MessageHeader_1_0 {// Renamed from MessageHeader char magic [4]; Version GIOP_version; boolean byte_order; octet message_type; unsigned long message_size;

   };

   // GIOP 1.1

   struct MessageHeader_1_1 { char magic [4]; Version GIOP_version; octet flags; // GIOP 1.1 change octet message_type; unsigned long message_size;

   };

   // GIOP 1.2 and 1.3typedef MessageHeader_1_1 MessageHeader_1_2;typedef MessageHeader_1_1 MessageHeader_1_3;

   // GIOP 1.0

   struct RequestHeader _1_0 {IOP::ServiceContextList service_context;unsigned long request_id;boolean response_expected;sequence <octet> object_key;string operation;CORBA::OctetSeq requesting_principal;

   }; // GIOP 1.1

   struct RequestHeader_1_1 { IOP::ServiceContextList service_context; unsigned long request_id; boolean response_expected; octet reserved[3]; // Added in GIOP 1.1 sequence <octet> object_key; string operation; CORBA::OctetSeq requesting_principal;

   };

   // GIOP 1.2, and 1.3typedef short AddressingDisposition;const short KeyAddr = 0;const short ProfileAddr = 1;const short ReferenceAddr = 2;

   struct IORAddressingInfo {unsigned long selected_profile_index;IOP::IOR ior;

   };

   union TargetAddress switch (AddressingDisposition) { case KeyAddr: sequence <octet> object_key; case ProfileAddr: IOP::TaggedProfile profile; case ReferenceAddr: IORAddressingInfo ior;

   };

   struct RequestHeader_1_2 { unsigned long request_id; octet response_flags; octet reserved[3]; TargetAddress target; string operation; // requesting_principal not in GIOP 1.2 and 1.3 IOP::ServiceContextList service_context; // 1.2 change

   };

   #ifndef GIOP_1_2 // GIOP 1.0 and 1.1 enum ReplyStatusType_1_0 {// Renamed from ReplyStatusType

   NO_EXCEPTION,USER_EXCEPTION,SYSTEM_EXCEPTION,LOCATION_FORWARD

   };

   // GIOP 1.0

   struct ReplyHeader_1_0 {// Renamed from ReplyHeaderIOP::ServiceContextList service_context;unsigned long request_id;

   ReplyStatusType_1_0 reply_status;};

   // GIOP 1.1typedef ReplyHeader_1_0 ReplyHeader_1_1;// Same Header contents for 1.0 and 1.1

   #else // GIOP 1.2, and 1.3 enum ReplyStatusType_1_2 {

   NO_EXCEPTION,USER_EXCEPTION,SYSTEM_EXCEPTION,LOCATION_FORWARD,LOCATION_FORWARD_PERM, // new value for 1.2NEEDS_ADDRESSING_MODE // new value for 1.2

   };

   struct ReplyHeader_1_2 { unsigned long request_id; ReplyStatusType_1_2 reply_status; IOP::ServiceContextList service_context; // 1.2 change

   };typedef ReplyHeader_1_2 ReplyHeader_1_3;

   #endif // GIOP_1_2

   struct SystemExceptionReplyBody {string exception_id;unsigned long minor_code_value;unsigned long completion_status;

   };

   struct CancelRequestHeader { unsigned long request_id;};

   // GIOP 1.0struct LocateRequestHeader_1_0 {

   // Renamed LocationRequestHeader unsigned long request_id; sequence <octet> object_key;

   };

   // GIOP 1.1 typedef LocateRequestHeader_1_0 LocateRequestHeader_1_1; // Same Header contents for 1.0 and 1.1

   // GIOP 1.2 and 1.3

   struct LocateRequestHeader_1_2 {unsigned long request_id;TargetAddress target;

   };typedef LocateRequestHeader_1_2 LocateRequestHeader_1_3;

   #ifndef GIOP_1_2 // GIOP 1.0 and 1.1 enum LocateStatusType_1_0 {// Renamed from LocateStatusType

   UNKNOWN_OBJECT, OBJECT_HERE, OBJECT_FORWARD

   };

   // GIOP 1.0 struct LocateReplyHeader_1_0 {

// Renamed from LocateReplyHeader

unsigned long request_id;
LocateStatusType_1_0 locate_status;
};

   // GIOP 1.1 typedef LocateReplyHeader_1_0 LocateReplyHeader_1_1; // same Header contents for 1.0 and 1.1

   #else // GIOP 1.2, and 1.3 enum LocateStatusType_1_2 {

   UNKNOWN_OBJECT,OBJECT_HERE,OBJECT_FORWARD,OBJECT_FORWARD_PERM, // new value for GIOP 1.2LOC_SYSTEM_EXCEPTION, // new value for GIOP 1.2LOC_NEEDS_ADDRESSING_MODE // new value for GIOP 1.2

   };

   struct LocateReplyHeader_1_2 { unsigned long request_id; LocateStatusType_1_2 locate_status;

   }; typedef LocateReplyHeader_1_2 LocateReplyHeader_1_3; #endif // GIOP_1_2

   // GIOP 1.2, and 1.3 struct FragmentHeader_1_2 {

   unsigned long request_id; }; typedef FragmentHeader_1_2 FragmentHeader_1_3;

   };