Previous | Table of Contents | Next |
// IDL// File: PortableServer.idl#ifndef _PORTABLE_SERVER_IDL_#define _PORTABLE_SERVER_IDL_
import ::CORBA;
#pragma prefix "omg.org"
module PortableServer { typeprefix PortableServer “omg.org?; local interface POA; // forward declaration typedef sequence<POA>
POAList;
native Servant;
typedef CORBA::OctetSeq ObjectId;
exception ForwardRequest { Object forward_reference; };
// Policy interfaces
const CORBA::PolicyType THREAD_POLICY_ID = 16; const CORBA::PolicyType LIFESPAN_POLICY_ID = 17; const CORBA::PolicyType ID_UNIQUENESS_POLICY_ID
= 18; const CORBA::PolicyType ID_ASSIGNMENT_POLICY_ID = 19; const CORBA::PolicyType IMPLICIT_ACTIVATION_POLICY_ID = 20; const
CORBA::PolicyType SERVANT_RETENTION_POLICY_ID = 21; const CORBA::PolicyType REQUEST_PROCESSING_POLICY_ID = 22;
enum ThreadPolicyValue { ORB_CTRL_MODEL, SINGLE_THREAD_MODEL, MAIN_THREAD_MODEL
};
local interface ThreadPolicy : CORBA::Policy { readonly attribute ThreadPolicyValue value; };
enum LifespanPolicyValue { TRANSIENT, PERSISTENT
};
local interface LifespanPolicy : CORBA::Policy { readonly attribute LifespanPolicyValue value; };
enum IdUniquenessPolicyValue { UNIQUE_ID, MULTIPLE_ID
};
local interface IdUniquenessPolicy : CORBA::Policy { readonly attribute IdUniquenessPolicyValue value; };
enum IdAssignmentPolicyValue { USER_ID, SYSTEM_ID
};
local interface IdAssignmentPolicy : CORBA::Policy { readonly attribute IdAssignmentPolicyValue value; };
enum ImplicitActivationPolicyValue { IMPLICIT_ACTIVATION, NO_IMPLICIT_ACTIVATION
};
local interface ImplicitActivationPolicy : CORBA::Policy { readonly attribute ImplicitActivationPolicyValue value; };
enum ServantRetentionPolicyValue { RETAIN, NON_RETAIN
};
local interface ServantRetentionPolicy : CORBA::Policy { readonly attribute ServantRetentionPolicyValue value; };
enum RequestProcessingPolicyValue { USE_ACTIVE_OBJECT_MAP_ONLY, USE_DEFAULT_SERVANT, USE_SERVANT_MANAGER };
local interface RequestProcessingPolicy : CORBA::Policy { readonly attribute RequestProcessingPolicyValue value; };
// POAManager interface
local interface POAManager { exception AdapterInactive{};
enum State {HOLDING, ACTIVE, DISCARDING, INACTIVE};
void activate()raises(AdapterInactive);
void hold_requests(in boolean wait_for_completion)raises(AdapterInactive);
void discard_requests(in boolean wait_for_completion)raises(AdapterInactive);
void deactivate(in boolean etherealize_objects, in boolean wait_for_completion)raises(AdapterInactive);
State get_state();string get_id();
};
// PoaManagerFactory
local interface POAManagerFactory { typedef sequence<POAManager> POAManagerSeq;
exception ManagerAlreadyExists {};
POAManager create_POAManager( in string id, in CORBA::PolicyList policies ) raises(ManagerAlreadyExists, CORBA::PolicyError);
POAManagerSeq list(); POAManager find( in string id); };
// AdapterActivator interface
local interface AdapterActivator { boolean unknown_adapter( in POA parent,
in string name); };
// ServantManager interface
local interface ServantManager{ };
local interface ServantActivator : ServantManager { Servant incarnate (
in ObjectId oid,
in POA adapter) raises (ForwardRequest);
void etherealize (
in ObjectId | oid, | ||||
in POA | adapter, | ||||
in Servant | serv, | ||||
in boolean | cleanup_in_progress, | ||||
in boolean | remaining_activations); | ||||
}; |
local interface ServantLocator : ServantManager { native Cookie; Servant preinvoke(
in ObjectId oid, in POA adapter, in CORBA::Identifier operation, out Cookie the_cookie)
raises (ForwardRequest);
void postinvoke( in ObjectId oid, in POA adapter, in CORBA::Identifier operation, in Cookie the_cookie, in Servant the_servant
); };
// POA interface
local interface POA { exception AdapterAlreadyExists {}; exception AdapterNonExistent {}; exception InvalidPolicy {unsigned
short index;}; exception NoServant {}; exception ObjectAlreadyActive {}; exception ObjectNotActive {}; exception ServantAlreadyActive
{}; exception ServantNotActive {}; exception WrongAdapter {}; exception WrongPolicy {};
// POA creation and destruction
POA create_POA( in string adapter_name, in POAManager a_POAManager, in CORBA::PolicyList policies)
raises (AdapterAlreadyExists, InvalidPolicy);
POA find_POA( in string adapter_name, in boolean activate_it)
raises (AdapterNonExistent);
void destroy( in boolean etherealize_objects, in boolean wait_for_completion);
// Factories for Policy objects
ThreadPolicy create_thread_policy( in ThreadPolicyValue value); LifespanPolicy create_lifespan_policy( in LifespanPolicyValue
value); IdUniquenessPolicy create_id_uniqueness_policy( in IdUniquenessPolicyValue value); IdAssignmentPolicy create_id_assignment_policy(
in IdAssignmentPolicyValue value); ImplicitActivationPolicy create_implicit_activation_policy( in ImplicitActivationPolicyValue
value); ServantRetentionPolicy create_servant_retention_policy( in ServantRetentionPolicyValue value); RequestProcessingPolicy
create_request_processing_policy( in RequestProcessingPolicyValue value);
// POA attributes
readonly attribute string the_name;readonly attribute POA the_parent;readonly attribute POAList the_children;readonly attribute POAManager the_POAManager;attribute AdapterActivator the_activator;
// Servant Manager registration:
ServantManager get_servant_manager()raises (WrongPolicy);
void set_servant_manager( in ServantManager imgr) raises (WrongPolicy);
// operations for the USE_DEFAULT_SERVANT policy
Servant get_servant() raises (NoServant, WrongPolicy);
void set_servant(in Servant p_servant) raises (WrongPolicy);
// object activation and deactivation
ObjectId activate_object( in Servant p_servant) raises (ServantAlreadyActive, WrongPolicy);
void activate_object_with_id( in ObjectId id, in Servant p_servant)
raises (ServantAlreadyActive, ObjectAlreadyActive, WrongPolicy);
void deactivate_object( in ObjectId oid) raises (ObjectNotActive, WrongPolicy);
// reference creation operations
Object create_reference ( in CORBA::RepositoryId intf) raises (WrongPolicy);
Object create_reference_with_id ( in ObjectId oid, in CORBA::RepositoryId intf
);
// Identity mapping operations:
ObjectId servant_to_id( in Servant p_servant) raises (ServantNotActive, WrongPolicy);
Object servant_to_reference( in Servant p_servant) raises (ServantNotActive, WrongPolicy);
Servant reference_to_servant( in Object reference) raises(ObjectNotActive, WrongAdapter, WrongPolicy);
ObjectId reference_to_id(
in Object reference) raises (WrongAdapter, WrongPolicy);
Servant id_to_servant( in ObjectId oid) raises (ObjectNotActive, WrongPolicy);
Object id_to_reference(in ObjectId oid) raises (ObjectNotActive, WrongPolicy);
readonly attribute CORBA::OctetSeq id;readonly attribute POAManagerFactory the_POAManagerFactory;
};
// Current interface
local interface Current : CORBA::Current { exception NoContext { };
POA get_POA()
raises (NoContext);
ObjectId get_object_id() raises (NoContext);
Object get_reference() raises(NoContext);
Servant get_servant() raises(NoContext); }; };