Previous Table of Contents Next


21.10.3 PortableInterceptor


   // IDL// File: PortableInterceptor.idl#ifndef _PORTABLE_INTERCEPTOR_IDL_#define _PORTABLE_INTERCEPTOR_IDL_

   import ::CORBA;import ::IOP;import ::Messaging;import ::Dynamic;

   module PortableInterceptor { typeprefix PortableInterceptor “omg.org?; local interface Interceptor {

    readonly attribute string name; void destroy(); };

   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 {};

   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 { boolean equals( in ObjectReferenceFactory other ) ; Object make_object( in string repositoryId, in ObjectId id ) ; IOP::TaggedProfileSeq make_profiles(

   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<ObjectReferenceTemplate> 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 ORBInitializer {void pre_init (in ORBInitInfo info);void post_init (in ORBInitInfo info);

   }; };

   #endif _PORTABLE_INTERCEPTOR_IDL_