blob: e2d87e39d54758376026c892341fddc5244f56c4 [file] [log] [blame]
// 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 <orb.idl>
#include <IOP.idl>
#include <Messaging.idl>
#include <Dynamic.idl>
#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 {};
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<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);
};
}; // module PortableInterceptor
#endif // _PORTABLE_INTERCEPTOR_IDL_