IDL documentation for the CORBA specification.

IDLs pertaining to IIOP
// IOP module described in chap 10 CORBA V2, 7-95

module IOP {  // IDL
	//
	// Standard Protocol Profile tag values 
	// 
	typedef unsigned long  ProfileId;
	const ProfileId	 TAG_INTERNET_IOP = 0;
	const ProfileId	 TAG_MULTIPLE_COMPONENTS = 1;

	struct TaggedProfile {
		ProfileId  tag;
		sequence  profile_data;
	};

	//
	// an Interoperable Object Reference is a sequence of
	// object-specific protocol profiles, plus a type ID.
	//
	struct IOR {
		string	type_id;
		sequence  profiles;
	};

	//
	// Standard way of representing multicomponent profiles.
	// This would be encapsulated in a TaggedProfile.
	//
	typedef unsigned long ComponentId;
	struct TaggedComponent {
		ComponentId  tag;
		sequence  component_data;
	};
	typedef sequence  MultipleComponentProfile;


typedef unsigned long ServiceID;

	struct ServiceContext {
 		ServiceID context_id;
 		sequence  context_data;
 	};
	typedef sequence  ServiceContextList;

	const ServiceID	TransactionService = 0;



};
// GIOP module described in CORBA V2, 7-95 chap 12
// Complete IDL for GIOP module in CORBA
// V2.0, 7-95 p 10-29
// GIOP message header: CORBA V2, 7-95 p 12-16
// GIOP request header:  CORBA V2, 7-95 p 12-17
// GIOP reply header: CORBA V2, 7-95 p 12-19
// GIOP cancel request and locate request: CORBA V2, 7-95 pp 12-20 -- 12-21
// GIOP locate reply: CORBA V2, 7-95 p 12-22

module GIOP {					    // IDL
	enum MsgType {
		Request, Reply, CancelRequest,
		LocateRequest, LocateReply,
		CloseConnection, MessageError
	};

	struct Version {
		char			major;
		char			minor;
	};

	struct MessageHeader {
		char			magic [4];
		Version			GIOP_version;
		boolean			byte_order;
		octet			message_type;
		unsigned long			message_size;
	};

	struct RequestHeader {
		::IOP::ServiceContextList	service_context;
		unsigned long  request_id;
 		boolean	response_expected;
		sequence   object_key;
		string operation;

	  /*
           * ::CORBA:: added for correct scope
           */
		::CORBA::Principal requesting_principal;
	};

	enum ReplyStatusType {
		NO_EXCEPTION,
		USER_EXCEPTION,
		SYSTEM_EXCEPTION,
		LOCATION_FORWARD
	};

	struct ReplyHeader {
		::IOP::ServiceContextList	 service_context;
		unsigned long request_id;
		ReplyStatusType	reply_status;
 	};

	struct CancelRequestHeader {
		unsigned long request_id;
 	};

	struct LocateRequestHeader {
		unsigned long request_id;
		sequence  object_key;
	};

	enum LocateStatusType {
		UNKNOWN_OBJECT,
		OBJECT_HERE,
		OBJECT_FORWARD
 	};

	struct LocateReplyHeader {
		unsigned long request_id;
		LocateStatusType  locate_status;
	};
};
//  IIOP module described in CORBA V2, 7-95 chap 12
// Complete IDL for IIOP module: CORBA V2, 7-95 p 12-31
module IIOP {			// IDL
	struct Version {
		char			major;
		char			minor;
	};

	struct ProfileBody {
		Version				iiop_version;
		string				host;
		unsigned short			port;
		sequence 		object_key;
 	};
};