// -*- IDL -*- /** * @file PortableInterceptor.pidl * * $Id$ * * @brief Pre-compiled IDL source for the PortableInterceptor * components in the ORB. * * This file contains the interface definitions for "Portable" * Interceptor support. * The following is from orbos/99-12-02 Portable Interceptors spec, * the full IDL is downloadable from orbos/99-12-02. * * Additional updates from ptc/00-08-05 are also included. Changes * include: * - addition of the Interceptor::destroy() method * - move of CodecFactory and Codec interfaces to the IOP module * * This file was used to generate the code in PortableInterceptorC.* * The command used to generate code is: * * tao_idl * -o orig -Gp -Gd -Ge 1 -GT -GA -Sc * -Wb,export_macro=TAO_Export * -Wb,pre_include="ace/pre.h" * -Wb,post_include="ace/post.h" * PortableInterceptor.pidl * * Patches for changes to the generated code are available in the * `diffs' directory. * Move the typecodes for exceptions in PortableIntercaptorA.cpp to * PortableInterceptorC.cpp. */ // File: PortableInterceptor.idl #ifndef _PORTABLE_INTERCEPTOR_IDL_ #define _PORTABLE_INTERCEPTOR_IDL_ #include #include #include #include #include #include module PortableInterceptor { typeprefix PortableInterceptor "omg.org"; 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; // @@ TO BE REMOVED const ReplyStatus TRANSPORT_RETRY = 5; // @@ TO BE RENUMBERED to 4 const ReplyStatus UNKNOWN = 6; // @@ TO BE RENUMBERED to 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 ServerId server_id; readonly attribute ORBId orb_id; readonly attribute AdapterName adapter_name; 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 { /// Proprietary method in TAO for fault tolerance void tao_ft_interception_point (in ServerRequestInfo ri, out CORBA::OctetSeq os) raises (ForwardRequest); 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 PolicyFactory { CORBA::Policy create_policy (in CORBA::PolicyType type, in any value) raises (CORBA::PolicyError); }; local interface IORInterceptor; 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_ */