// File: PortableInterceptor.idl // CORBA 3.0, Chapter 21 #ifndef _PORTABLE_INTERCEPTOR_IDL_ #define _PORTABLE_INTERCEPTOR_IDL_ #ifdef _PRE_3_0_COMPILER_ #pragma prefix "omg.org" #include #include #include #include #else import ::CORBA; import ::IOP; import ::Messaging; import ::Dynamic; #endif // _PRE_3_0_COMPILER_ module PortableInterceptor { #ifndef _PRE_3_0_COMPILER_ typeprefix PortableInterceptor "omg.org"; #endif // _PRE_3_0_COMPILER_ local interface Interceptor { readonly attribute string name; }; exception ForwardRequest { Object forward; }; 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 TRANSPORT_RETRY = 4; const ReplyStatus UNKNOWN = 5; typedef unsigned long SlotId; exception InvalidSlot {}; typedef short ProcessingMode; const ProcessingMode LOCAL_AND_REMOTE = 0; const ProcessingMode REMOTE_ONLY = 1; const ProcessingMode LOCAL_ONLY = 2; // ProcessingMode Policy (default = LOCAL_AND_REMOTE) const CORBA::PolicyType PROCESSING_MODE_POLICY_TYPE = 61; // assigned by OMG; local interface ProcessingModePolicy : CORBA::Policy { readonly attribute ProcessingMode processing_mode; }; 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); }; typedef string ServerId ; typedef string ORBId ; typedef CORBA::StringSeq AdapterName ; typedef CORBA::OctetSeq ObjectId ; local interface ServerRequestInfo : RequestInfo { readonly attribute any sending_exception; readonly attribute ServerId server_id; readonly attribute ORBId orb_id; readonly attribute AdapterName adapter_name; readonly attribute ObjectId 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); }; abstract valuetype ObjectReferenceFactory { Object make_object( in string repository_id, in ObjectId id ) ; }; abstract valuetype ObjectReferenceTemplate : ObjectReferenceFactory { readonly attribute ServerId server_id ; readonly attribute ORBId orb_id ; readonly attribute AdapterName adapter_name ; } ; typedef sequence ObjectReferenceTemplateSeq; typedef string AdapterManagerId; typedef short AdapterState ; const AdapterState HOLDING = 0 ; const AdapterState ACTIVE = 1 ; const AdapterState DISCARDING = 2 ; const AdapterState INACTIVE = 3 ; const AdapterState NON_EXISTENT = 4 ; local interface IORInfo { CORBA::Policy get_effective_policy (in CORBA::PolicyType type); void add_ior_component ( in IOP::TaggedComponent a_component); void add_ior_component_to_profile ( in IOP::TaggedComponent a_component, in IOP::ProfileId profile_id); }; local interface IORInterceptor : Interceptor { void establish_components (in IORInfo info); }; local interface IORInterceptor_3_0 : IORInterceptor { void components_established( in IORInfo info ); void adapter_manager_state_changed( in AdapterManagerId id, in AdapterState state ); void adapter_state_changed( in ObjectReferenceTemplateSeq templates, in AdapterState state); }; 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 ORBInitInfo_3_1 : ORBInitInfo { void add_client_request_interceptor_with_policy( in ClientRequestInterceptor interceptor, in CORBA::PolicyList policies) raises (DuplicateName, CORBA::PolicyError); void add_server_request_interceptor_with_policy( in ServerRequestInterceptor interceptor, in CORBA::PolicyList policies) raises (DuplicateName, CORBA::PolicyError); void add_ior_interceptor_with_policy( in IORInterceptor interceptor, in CORBA::PolicyList policies) raises (DuplicateName, CORBA::PolicyError); }; local interface ORBInitializer { void pre_init (in ORBInitInfo info); void post_init (in ORBInitInfo info); }; }; // module PortableInterceptor #endif // _PORTABLE_INTERCEPTOR_IDL_