blob: 69e6227c4998132963a83335479a747ebe14294a [file] [log] [blame]
// File: PortableInterceptor.idl
#ifndef _PORTABLE_INTERCEPTOR_IDL_
#define _PORTABLE_INTERCEPTOR_IDL_
#ifndef CORBA3
#define local
#endif
#include <orb.idl>
#include <Dynamic.idl>
// #include <IOP_N.idl>
#include <Messaging.idl>
#pragma prefix "omg.org"
module PortableInterceptor {
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;
typedef unsigned long SlotId;
exception InvalidSlot {};
interface Current : CORBA::Current {
any get_slot (in SlotId id) raises (InvalidSlot);
void set_slot (in SlotId id, in any data) raises (InvalidSlot);
};
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);
};
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_N::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);
};
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);
};
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);
};
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);
};
interface IORInfo {
CORBA::Policy get_effective_policy (in CORBA::PolicyType type);
void add_ior_component (in IOP::TaggedComponent component);
void add_ior_component_to_profile (
in IOP::TaggedComponent component,
in IOP::ProfileId profile_id);
};
interface IORInterceptor : Interceptor {
void establish_components (in IORInfo info);
};
interface PolicyFactory
{
CORBA::Policy create_policy (in CORBA::PolicyType type, in any value)
raises (CORBA::PolicyError);
};
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);
};
interface ORBInitializer {
void pre_init (in ORBInitInfo info);
void post_init (in ORBInitInfo info);
};
};
#endif // _PORTABLE_INTERCEPTOR_IDL_