blob: ab1d748a60f7bbf09b1473d0e56fafa83825f8d3 [file] [log] [blame]
/* 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 <IOP.idl>
#include <orb.idl>
#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 <octet> 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 <octet> 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 <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;
// 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 <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
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