// File: GIOP.idl // From CORBA 3.0: Chapter 15, General Inter-ORB Protocol // To compiler this for #ifndef _GIOP_IDL_ #define _GIOP_IDL_ #ifdef _PRE_3_0_COMPILER_ #include #pragma prefix "omg.org" #else import ::IOP; #endif // _PRE_3_0_COMPILER_ module GIOP { // IDL extended for version 1.1 and 1.2 #ifndef _PRE_3_0_COMPILER_ typeprefix GIOP "omg.org"; #endif // _PRE_3_0_COMPILER_ #ifndef MAX_GIOP_MINOR_VERSION #define MAX_GIOP_MINOR_VERSION 4 #endif struct Version { octet major; octet minor; }; // Note: Principal is not used in V1.2 and beyond. However, it must // be available for V1.0 and V1.1 typedef sequence Principal; #if MAX_GIOP_MINOR_VERSION == 0 // GIOP 1.0 enum MsgType_1_0{ // rename from MsgType Request, Reply, CancelRequest, LocateRequest, LocateReply, CloseConnection, MessageError }; typedef MsgType_1_0 MsgType; #else // GIOP 1.1 enum MsgType_1_1{ Request, Reply, CancelRequest, LocateRequest, LocateReply, CloseConnection, MessageError, Fragment // GIOP 1.1 addition }; typedef MsgType_1_1 MsgType_1_2; typedef MsgType_1_1 MsgType_1_3; typedef MsgType_1_1 MsgType; #endif // GIOP 1.0 typedef char Magicn[4]; struct MessageHeader_1_0 {// Renamed from MessageHeader Magicn magic; Version GIOP_version; boolean byte_order; octet message_type; unsigned long message_size; }; // GIOP 1.1 struct MessageHeader_1_1 { Magicn magic; Version GIOP_version; octet flags; // GIOP 1.1 change octet message_type; unsigned long message_size; }; // GIOP 1.2 typedef MessageHeader_1_1 MessageHeader_1_2; // GIOP 1.3 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; IOP::ObjectKey object_key; string operation; Principal requesting_principal; }; // GIOP 1.1 typedef octet RequestReserved[3]; struct RequestHeader_1_1 { IOP::ServiceContextList service_context; unsigned long request_id; boolean response_expected; RequestReserved reserved; // Added in GIOP 1.1 IOP::ObjectKey object_key; string operation; Principal requesting_principal; }; // GIOP 1.2 typedef 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: IOP::ObjectKey object_key; case ProfileAddr: IOP::TaggedProfile profile; case ReferenceAddr: IORAddressingInfo ior; }; struct RequestHeader_1_2 { unsigned long request_id; octet response_flags; RequestReserved reserved; TargetAddress target; string operation; // Principal not in GIOP 1.2 IOP::ServiceContextList service_context; // 1.2 change }; // GIOP 1.3 typedef RequestHeader_1_2 RequestHeader_1_3; #if MAX_GIOP_MINOR_VERSION < 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 ReplyHeader IOP::ServiceContextList service_context; unsigned long request_id; ReplyStatusType_1_0 reply_status; }; // GIOP 1.1 typedef ReplyHeader_1_0 ReplyHeader_1_1; // Same Header contents for 1.0 and 1.1 typedef ReplyStatusType_1_0 ReplyStatusType; #endif #if MAX_GIOP_MINOR_VERSION >= 2 // GIOP 1.2 enum ReplyStatusType_1_2 { NO_EXCEPTION, USER_EXCEPTION, SYSTEM_EXCEPTION, LOCATION_FORWARD, LOCATION_FORWARD_PERM, // new value for 1.2 NEEDS_ADDRESSING_MODE // new value for 1.2 }; typedef ReplyStatusType_1_2 ReplyStatusType; struct ReplyHeader_1_2 { unsigned long request_id; ReplyStatusType_1_2 reply_status; IOP::ServiceContextList service_context; // 1.2 change }; // GIOP 1.3 typedef ReplyHeader_1_2 ReplyHeader_1_3; #endif struct SystemExceptionReplyBody { string exception_id; unsigned long minor_code_value; unsigned long completion_status; }; struct CancelRequestHeader { unsigned long request_id; }; // GIOP 1.0 struct LocateRequestHeader_1_0 {// Renamed LocationRequestHeader unsigned long request_id; IOP::ObjectKey object_key; }; // GIOP 1.1 typedef LocateRequestHeader_1_0 LocateRequestHeader_1_1; // Same Header contents for 1.0 and 1.1 // GIOP 1.2 struct LocateRequestHeader_1_2 { unsigned long request_id; TargetAddress target; }; // GIOP 1.3 typedef LocateRequestHeader_1_2 LocateRequestHeader_1_3; #if MAX_GIOP_MINOR_VERSION < 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 enum LocateStatusType_1_2 { UNKNOWN_OBJECT, OBJECT_HERE, OBJECT_FORWARD, OBJECT_FORWARD_PERM, // new value for GIOP 1.2 LOC_SYSTEM_EXCEPTION, // new value for GIOP 1.2 LOC_NEEDS_ADDRESSING_MODE // new value for GIOP 1.2 }; struct LocateReplyHeader_1_2 { unsigned long request_id; LocateStatusType_1_2 locate_status; }; // GIOP 1.3 typedef LocateReplyHeader_1_2 LocateReplyHeader_1_3; #endif // MAX_GIOP_VERSION_NUMBER // GIOP 1.2 struct FragmentHeader_1_2 { unsigned long request_id; }; // GIOP 1.3 typedef FragmentHeader_1_2 FragmentHeader_1_3; }; #endif // _GIOP_IDL_