#ifndef __pi_idl__ #define __pi_idl__ #include #include #include #include #include #pragma prefix "omg.org" module Messaging { enum SyncScope { SYNC_NONE, SYNC_WITH_TRANSPORT, SYNC_WITH_SERVER, SYNC_WITH_TARGET }; }; module Dynamic { struct Parameter { any argument; CORBA::ParameterMode mode; }; typedef sequence ParameterList; typedef CORBA::StringSeq ContextList; typedef CORBA::TypeCodeSeq ExceptionList; typedef CORBA::StringSeq RequestContext; }; module IOP { local interface Codec { exception InvalidTypeForEncoding { }; exception FormatMismatch { }; exception TypeMismatch { }; CORBA::OctetSeq encode (in any data) raises (InvalidTypeForEncoding); any decode (in CORBA::OctetSeq data) raises (FormatMismatch); CORBA::OctetSeq encode_value (in any data) raises (InvalidTypeForEncoding); any decode_value (in CORBA::OctetSeq data, in CORBA::TypeCode tc) raises (FormatMismatch, TypeMismatch); }; typedef short EncodingFormat; const EncodingFormat ENCODING_CDR_ENCAPS = 0; struct Encoding { EncodingFormat format; octet major_version; octet minor_version; }; local interface CodecFactory { exception UnknownEncoding { }; Codec create_codec (in Encoding enc) raises (UnknownEncoding); }; }; module PortableInterceptor { local interface Interceptor { readonly attribute string name; void destroy(); }; exception ForwardRequest { Object forward; boolean permanent; }; typedef short ReplyStatus; // Valid reply_status values: const ReplyStatus SUCCESSFUL = 0; const ReplyStatus SYSTEM_EXCEPTION = 1; const ReplyStatus USER_EXCEPTION = 2; const ReplyStatus LOCATION_FORWARD = 3; const ReplyStatus LOCATION_FORWARD_PERMANENT = 4; const ReplyStatus TRANSPORT_RETRY = 5; typedef unsigned long SlotId; exception InvalidSlot { }; local interface Current : CORBA::Current { any get_slot (in SlotId id) raises (InvalidSlot); void set_slot (in SlotId id, in any data) raises (InvalidSlot); }; local interface RequestInfo { readonly attribute unsigned long request_id; readonly attribute string operation; readonly attribute Dynamic::ParameterList arguments; readonly attribute Dynamic::ExceptionList exceptions; readonly attribute Dynamic::ContextList contexts; readonly attribute Dynamic::RequestContext operation_context; readonly attribute any result; readonly attribute boolean response_expected; readonly attribute Messaging::SyncScope sync_scope; readonly attribute ReplyStatus reply_status; readonly attribute Object forward_reference; any get_slot (in SlotId id) raises (InvalidSlot); IOP::ServiceContext get_request_service_context (in IOP::ServiceID id); IOP::ServiceContext get_reply_service_context (in IOP::ServiceID id); }; local interface ClientRequestInfo : RequestInfo { readonly attribute Object target; readonly attribute Object effective_target; readonly attribute IOP::TaggedProfile effective_profile; readonly attribute any received_exception; readonly attribute CORBA::RepositoryId received_exception_id; IOP::TaggedComponent get_effective_component (in IOP::ComponentId id); IOP::TaggedComponentSeq get_effective_components (in IOP::ComponentId id); CORBA::Policy get_request_policy (in CORBA::PolicyType type); void add_request_service_context (in IOP::ServiceContext service_context, in boolean replace); }; local interface ServerRequestInfo : RequestInfo { readonly attribute any sending_exception; readonly attribute CORBA::OctetSeq object_id; readonly attribute CORBA::OctetSeq adapter_id; readonly attribute CORBA::RepositoryId target_most_derived_interface; CORBA::Policy get_server_policy (in CORBA::PolicyType type); void set_slot (in SlotId id, in any data) raises (InvalidSlot); boolean target_is_a (in CORBA::RepositoryId id); void add_reply_service_context (in IOP::ServiceContext service_context, in boolean replace); }; local interface ClientRequestInterceptor : Interceptor { void send_request (in ClientRequestInfo ri) raises (ForwardRequest); void send_poll (in ClientRequestInfo ri); void receive_reply (in ClientRequestInfo ri); void receive_exception (in ClientRequestInfo ri) raises (ForwardRequest); void receive_other (in ClientRequestInfo ri) raises (ForwardRequest); }; local interface ServerRequestInterceptor : Interceptor { void receive_request_service_contexts (in ServerRequestInfo ri) raises (ForwardRequest); void receive_request (in ServerRequestInfo ri) raises (ForwardRequest); void send_reply (in ServerRequestInfo ri); void send_exception (in ServerRequestInfo ri) raises (ForwardRequest); void send_other (in ServerRequestInfo ri) raises (ForwardRequest); }; local interface IORInfo { CORBA::Policy get_effective_policy (in CORBA::PolicyType type); void add_ior_component (in IOP::TaggedComponent comp); void add_ior_component_to_profile (in IOP::TaggedComponent comp, in IOP::ProfileId profile_id); }; local interface IORInterceptor : Interceptor { void establish_components (in IORInfo info); }; local interface PolicyFactory { CORBA::Policy create_policy (in CORBA::PolicyType type, in any value) raises (CORBA::PolicyError); }; local interface ORBInitInfo { typedef string ObjectId; exception DuplicateName { string name; }; exception InvalidName { }; readonly attribute CORBA::StringSeq arguments; readonly attribute string orb_id; readonly attribute IOP::CodecFactory codec_factory; void register_initial_reference (in ObjectId id, in Object obj) raises (InvalidName); Object resolve_initial_references (in ObjectId id) raises (InvalidName); void add_client_request_interceptor (in ClientRequestInterceptor interceptor) raises (DuplicateName); void add_server_request_interceptor (in ServerRequestInterceptor interceptor) raises (DuplicateName); void add_ior_interceptor (in IORInterceptor interceptor) raises (DuplicateName); SlotId allocate_slot_id (); void register_policy_factory (in CORBA::PolicyType type, in PolicyFactory policy_factory); }; local interface ORBInitializer { void pre_init (in ORBInitInfo info); void post_init (in ORBInitInfo info); }; }; #endif