/* This file contains OMG IDL from CORBA V2.3.1 * $Id: GIOP.idl,v 1.2 2001/09/22 14:51:13 jso Exp $ */ #ifndef __GIOP_IDL #define __GIOP_IDL #include #include #pragma prefix "omg.org" #define GIOP_1_0 #define GIOP_1_1 #define GIOP_1_2 module GIOP { // IDL extended for version 1.1 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 typedef MessageHeader_1_1 MessageHeader_1_2; // GIOP 1.0 struct RequestHeader_1_0 { IOP::ServiceContextList service_context; unsigned long request_id; boolean response_expected; sequence object_key; string operation; CORBA::Principal 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 object_key; string operation; CORBA::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: sequence 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; // Principal not in GIOP 1.2 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 }; #endif // 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 }; // GIOP 1.0 struct ReplyHeader_1_0 {// Renamed from ReplyHeader IOP::ServiceContextList service_context; unsigned long request_id; ReplyStatusType_1_2 reply_status; }; // GIOP 1.1 typedef ReplyHeader_1_0 ReplyHeader_1_1; // Same Header contents for 1.0 and 1.1 struct ReplyHeader_1_2 { unsigned long request_id; ReplyStatusType_1_2 reply_status; IOP::ServiceContextList service_context; // 1.2 change }; 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; sequence 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; }; #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 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; }; #endif // GIOP_1_2 // GIOP 1.2 struct FragmentHeader_1_2 { unsigned long request_id; }; }; #endif