| /* |
| * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. Oracle designates this |
| * particular file as subject to the "Classpath" exception as provided |
| * by Oracle in the LICENSE file that accompanied this code. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| #include "corba.idl" |
| #include "CORBAX.idl" |
| |
| #pragma prefix "omg.org" |
| /** |
| * All Mapping corresponds to the Chapter 11 of |
| * CORBA V2.3.1 specified by OMG document formal/99-10-07.pdf. |
| * The exception to this is the id attribute, which is added in ptc/00-08-06, |
| * section 11.3.8.26. |
| */ |
| module PortableServer { |
| |
| #pragma version PortableServer 2.3 |
| |
| // forward reference |
| interface POA; |
| |
| /** |
| * List of POAs |
| */ |
| typedef sequence<POA> POAList; |
| |
| /** |
| * Values of type Servant support a language specific |
| * programming interface that can be used by the ORB to |
| * obtain a default POA for that servant. |
| * Some language mappings may allow Servant values to |
| * be implicitly converted to object references under |
| * appropriate conditions. |
| */ |
| native Servant; |
| |
| /** |
| * ObjectId value associated with the object reference. |
| */ |
| typedef sequence<octet> ObjectId; |
| |
| /** |
| * ForwardRequest to indicate to the ORB |
| * that it is responsible for delivering |
| * the current request and subsequent |
| * requests to the object denoted in the |
| * forward_reference member of the exception. |
| */ |
| exception ForwardRequest { Object forward_reference; }; |
| |
| // ********************************************** |
| // |
| // Policy interfaces |
| // |
| // ********************************************** |
| |
| /** |
| * The value representing THREAD_POLICY_ID. |
| */ |
| const CORBA::PolicyType THREAD_POLICY_ID = 16; |
| /** |
| * The value representing LIFESPAN_POLICY_ID. |
| */ |
| const CORBA::PolicyType LIFESPAN_POLICY_ID = 17; |
| /** |
| * The value representing ID_UNIQUENESS_POLICY_ID. |
| */ |
| const CORBA::PolicyType ID_UNIQUENESS_POLICY_ID = 18; |
| /** |
| * The value representing ID_ASSIGNMENT_POLICY_ID. |
| */ |
| const CORBA::PolicyType ID_ASSIGNMENT_POLICY_ID = 19; |
| /** |
| * The value representing IMPLICIT_ACTIVATION_POLICY_ID. |
| */ |
| const CORBA::PolicyType IMPLICIT_ACTIVATION_POLICY_ID = 20; |
| /** |
| * The value representing SERVANT_RETENTION_POLICY_ID. |
| */ |
| const CORBA::PolicyType SERVANT_RETENTION_POLICY_ID = 21; |
| /** |
| * The value representing REQUEST_PROCESSING_POLICY_ID. |
| */ |
| const CORBA::PolicyType REQUEST_PROCESSING_POLICY_ID = 22; |
| |
| /** |
| * The ThreadPolicyValue can have the following values. |
| * ORB_CTRL_MODEL - The ORB is responsible for assigning |
| * requests for an ORB- controlled POA to threads. |
| * SINGLE_THREAD_MODEL - Requests for a single-threaded |
| * POA are processed sequentially. |
| */ |
| enum ThreadPolicyValue { ORB_CTRL_MODEL, SINGLE_THREAD_MODEL }; |
| |
| /** |
| * The ThreadPolicy specifies the threading model |
| * used with the created POA. The default is |
| * ORB_CTRL_MODEL. |
| */ |
| interface ThreadPolicy : CORBA::Policy { |
| #pragma sun_local ThreadPolicy "" |
| /** |
| * specifies the policy value |
| */ |
| readonly attribute ThreadPolicyValue value; |
| }; |
| |
| /** |
| * The LifespanPolicyValue can have the following values. |
| * TRANSIENT - The objects implemented in the POA |
| * cannot outlive the POA instance in which they are |
| * first created. |
| * PERSISTENT - The objects implemented in the POA can |
| * outlive the process in which they are first created. |
| */ |
| enum LifespanPolicyValue { TRANSIENT, PERSISTENT }; |
| |
| /** |
| * The LifespanPolicy specifies the lifespan of the |
| * objects implemented in the created POA. The default |
| * is TRANSIENT. |
| */ |
| interface LifespanPolicy : CORBA::Policy { |
| #pragma sun_local LifespanPolicy "" |
| /** |
| * specifies the policy value |
| */ |
| readonly attribute LifespanPolicyValue value; |
| }; |
| |
| /** |
| * IdUniquenessPolicyValue can have the following values. |
| * UNIQUE_ID - Servants activated with that POA support |
| * exactly one Object Id. MULTIPLE_ID - a servant |
| * activated with that POA may support one or more |
| * Object Ids. |
| */ |
| enum IdUniquenessPolicyValue { UNIQUE_ID, MULTIPLE_ID }; |
| |
| /** |
| * The IdUniquenessPolicy specifies whether the servants |
| * activated in the created POA must have unique object i |
| * identities. The default is UNIQUE_ID. |
| */ |
| interface IdUniquenessPolicy : CORBA::Policy { |
| #pragma sun_local IdUniquenessPolicy "" |
| /** |
| * specifies the policy value |
| */ |
| readonly attribute IdUniquenessPolicyValue value; |
| }; |
| |
| /** |
| * The IdAssignmentPolicyValue can have the following |
| * values. USER_ID - Objects created with that POA are |
| * assigned Object Ids only by the application. |
| * SYSTEM_ID - Objects created with that POA are |
| * assigned Object Ids only by the POA. If the POA also |
| * has the PERSISTENT policy, assigned Object Ids must |
| * be unique across all instantiations of the same POA. |
| */ |
| enum IdAssignmentPolicyValue { USER_ID, SYSTEM_ID }; |
| |
| /** |
| * IdAssignmentPolicy specifies whether Object Ids in |
| * the created POA are generated by the application or |
| * by the ORB. The default is SYSTEM_ID. |
| */ |
| interface IdAssignmentPolicy : CORBA::Policy { |
| #pragma sun_local IdAssignmentPolicy "" |
| /** |
| * specifies the policy value |
| */ |
| readonly attribute IdAssignmentPolicyValue value; |
| }; |
| |
| /** |
| * ImplicitActivationPolicyValue has the following |
| * semantics. |
| * IMPLICIT_ACTIVATION to indicate implicit activation |
| * of servants. This requires SYSTEM_ID and RETAIN |
| * policies to be set. |
| * NO_IMPLICIT_ACTIVATION to indicate no implicit |
| * servant activation. |
| */ |
| enum ImplicitActivationPolicyValue { |
| IMPLICIT_ACTIVATION, NO_IMPLICIT_ACTIVATION |
| }; |
| |
| /** |
| * This policy specifies whether implicit activation |
| * of servants is supported in the created POA. |
| */ |
| interface ImplicitActivationPolicy : CORBA::Policy { |
| #pragma sun_local ImplicitActivationPolicy "" |
| /** |
| * specifies the policy value |
| */ |
| readonly attribute ImplicitActivationPolicyValue value; |
| }; |
| |
| /** |
| * ServantRetentionPolicyValue can have the following |
| * values. RETAIN - to indicate that the POA will retain |
| * active servants in its Active Object Map. |
| * NON_RETAIN - to indicate Servants are not retained by |
| * the POA. If no ServantRetentionPolicy is specified at |
| * POA creation, the default is RETAIN. |
| */ |
| enum ServantRetentionPolicyValue { RETAIN, NON_RETAIN }; |
| |
| /** |
| * This policy specifies whether the created POA retains |
| * active servants in an Active Object Map. |
| */ |
| interface ServantRetentionPolicy : CORBA::Policy { |
| #pragma sun_local ServantRetentionPolicy "" |
| /** |
| * specifies the policy value |
| */ |
| readonly attribute ServantRetentionPolicyValue value; |
| }; |
| |
| /** |
| * The RequestProcessingPolicyValue can have the following |
| * values. USE_ACTIVE_OBJECT_MAP_ONLY - If the Object Id |
| * is not found in the Active Object Map, |
| * an OBJECT_NOT_EXIST exception is returned to the |
| * client. The RETAIN policy is also required. |
| * USE_DEFAULT_SERVANT - If the Object Id is not found in |
| * the Active Object Map or the NON_RETAIN policy is |
| * present, and a default servant has been registered |
| * with the POA using the set_servant operation, |
| * the request is dispatched to the default servant. |
| * USE_SERVANT_MANAGER - If the Object Id is not found |
| * in the Active Object Map or the NON_RETAIN policy |
| * is present, and a servant manager has been registered |
| * with the POA using the set_servant_manager operation, |
| * the servant manager is given the opportunity to |
| * locate a servant or raise an exception. |
| */ |
| enum RequestProcessingPolicyValue { |
| USE_ACTIVE_OBJECT_MAP_ONLY, USE_DEFAULT_SERVANT, USE_SERVANT_MANAGER |
| }; |
| |
| /** |
| * This policy specifies how requests are processed by |
| * the created POA. The default is |
| * USE_ACTIVE_OBJECT_MAP_ONLY. |
| */ |
| interface RequestProcessingPolicy : CORBA::Policy { |
| #pragma sun_local RequestProcessingPolicy "" |
| /** |
| * specifies the policy value |
| */ |
| readonly attribute RequestProcessingPolicyValue value; |
| }; |
| |
| |
| // ************************************************** |
| // |
| // POAManager interface |
| // |
| // ********************************** |
| /** |
| * Each POA object has an associated POAManager object. |
| * A POA manager may be associated with one or more |
| * POA objects. A POA manager encapsulates the processing |
| * state of the POAs it is associated with. |
| */ |
| interface POAManager { |
| #pragma sun_local POAManager "" |
| exception AdapterInactive{ }; |
| /** |
| * Specifies the states for the POAManager |
| */ |
| enum State {HOLDING, ACTIVE, DISCARDING, INACTIVE}; |
| |
| /** |
| * This operation changes the state of the POA manager |
| * to active, causing associated POAs to start processing |
| * requests. |
| * @exception AdapterInactive is raised if the operation is |
| * invoked on the POAManager in inactive state. |
| */ |
| void activate() |
| raises(AdapterInactive); |
| /** |
| * This operation changes the state of the POA manager |
| * to holding, causing associated POAs to queue incoming |
| * requests. |
| * @param wait_for_completion if FALSE, the operation |
| * returns immediately after changing state. |
| * If TRUE, it waits for all active requests |
| * to complete. |
| * @exception AdapterInactive is raised if the operation is |
| * invoked on the POAManager in inactive state. |
| */ |
| void hold_requests(in boolean wait_for_completion) |
| raises(AdapterInactive); |
| /** |
| * This operation changes the state of the POA manager |
| * to discarding. This causes associated POAs to discard |
| * incoming requests. |
| * @param wait_for_completion if FALSE, the operation |
| * returns immediately after changing state. |
| * If TRUE, it waits for all active requests |
| * to complete. |
| * @exception AdapterInactive is raised if the operation is |
| * invoked on the POAManager in inactive state. |
| */ |
| void discard_requests(in boolean wait_for_completion) |
| raises(AdapterInactive); |
| |
| /** |
| * This operation changes the state of the POA manager |
| * to inactive, causing associated POAs to reject the |
| * requests that have not begun executing as well as |
| * as any new requests. |
| * @param etherealize_objects a flag to indicate whether |
| * to invoke the etherealize operation of the |
| * associated servant manager for all active |
| * objects. |
| * @param wait_for_completion if FALSE, the operation |
| * returns immediately after changing state. |
| * If TRUE, it waits for all active requests |
| * to complete. |
| * @exception AdapterInactive is raised if the operation is |
| * invoked on the POAManager in inactive state. |
| */ |
| void deactivate(in boolean etherealize_objects, |
| in boolean wait_for_completion) |
| raises(AdapterInactive); |
| /** |
| * This operation returns the state of the POA manager. |
| */ |
| State get_state(); |
| }; |
| |
| |
| // ************************************************** |
| // |
| // AdapterActivator interface |
| // |
| // **************************** |
| |
| /** |
| * An adapter activator supplies a POA with the ability |
| * to create child POAs on demand, as a side-effect of |
| * receiving a request that names the child POA |
| * (or one of its children), or when find_POA is called |
| * with an activate parameter value of TRUE. |
| */ |
| |
| interface AdapterActivator { |
| #pragma sun_local AdapterActivator "" |
| #pragma version AdapterActivator 2.3 |
| /** |
| * This operation is invoked when the ORB receives |
| * a request for an object reference that identifies |
| * a target POA that does not exist. The ORB invokes |
| * this operation once for each POA that must be |
| * created in order for the target POA to exist. |
| * @param parent indicates the parent POA for the POA |
| * that needs to be created. |
| * @param name identifies the name of the POA relative to |
| * the parent. |
| * @return returns TRUE if the POA was created or FALSE |
| * otherwise. |
| */ |
| boolean unknown_adapter(in POA parent, in string name); |
| }; |
| |
| |
| // ************************************************** |
| // |
| // ServantManager interface |
| // |
| // ****************************** |
| |
| /** |
| * A servant manager supplies a POA with the ability |
| * to activate objects on demand when the POA receives |
| * a request targeted at an inactive object. A servant |
| * manager is registered with a POA as a callback object, |
| * to be invoked by the POA when necessary. |
| * ServantManagers can either be ServantActivators or |
| * ServantLocators. A ServantManager object must be |
| * local to the process containing the POA objects |
| * it is registered with. |
| */ |
| |
| interface ServantManager |
| { #pragma sun_local ServantManager "" }; |
| |
| |
| /** |
| * When the POA has the RETAIN policy it uses servant |
| * managers that are ServantActivators. |
| */ |
| interface ServantActivator : ServantManager { |
| #pragma version ServantActivator 2.3 |
| #pragma sun_localservant ServantActivator "" |
| /** |
| * This operation is invoked by the POA whenever the |
| * POA receives a request for an object that is not |
| * currently active, assuming the POA has the |
| * USE_SERVANT_MANAGER and RETAIN policies. |
| * @param oid object Id associated with the object on |
| * the request was made. |
| * @param adapter object reference for the POA in which |
| * the object is being activated. |
| * @return Servant corresponding to oid is created or |
| * located by the user supplied servant manager. |
| * @exception ForwardRequest to indicate to the ORB |
| * that it is responsible for delivering |
| * the current request and subsequent |
| * requests to the object denoted in the |
| * forward_reference member of the exception. |
| */ |
| Servant incarnate ( in ObjectId oid, in POA adapter ) |
| raises (ForwardRequest); |
| /** |
| * This operation is invoked whenever a servant for |
| * an object is deactivated, assuming the POA has |
| * the USE_SERVANT_MANAGER and RETAIN policies. |
| * @param oid object Id associated with the object |
| * being deactivated. |
| * @param adapter object reference for the POA in which |
| * the object was active. |
| * @param serv contains reference to the servant |
| * associated with the object being deactivated. |
| * @param cleanup_in_progress if TRUE indicates that |
| * destroy or deactivate is called with |
| * etherealize_objects param of TRUE. FALSE |
| * indicates that etherealize was called due to |
| * other reasons. |
| * @param remaining_activations indicates whether the |
| * Servant Manager can destroy a servant. If |
| * set to TRUE, the Servant Manager should wait |
| * until all invocations in progress have |
| * completed. |
| */ |
| void etherealize ( in ObjectId oid, |
| in POA adapter, |
| in Servant serv, |
| in boolean cleanup_in_progress, |
| in boolean remaining_activations); |
| }; |
| |
| |
| /** |
| * When the POA has the NON_RETAIN policy it uses servant |
| * managers that are ServantLocators. Because the POA |
| * knows that the servant returned by this servant |
| * manager will be used only for a single request, |
| * it can supply extra information to the servant |
| * manager's operations and the servant manager's pair |
| * of operations may be able to cooperate to do |
| * something different than a ServantActivator. |
| * When the POA uses the ServantLocator interface, |
| * immediately after performing the operation invocation |
| * on the servant returned by preinvoke, the POA will |
| * invoke postinvoke on the servant manager, passing the |
| * ObjectId value and the Servant value as parameters |
| * (among others). This feature may be used to force |
| * every request for objects associated with a POA to |
| * be mediated by the servant manager. |
| */ |
| interface ServantLocator : ServantManager { |
| #pragma sun_localservant ServantLocator "" |
| /** |
| * Opaque data used to pass the information from |
| * preinvoke to postinvoke hooks. This specific |
| * by the language mapping, that is why it is |
| * specified as native. |
| */ |
| native Cookie; |
| /** |
| * This operations is used to get a servant that will be |
| * used to process the request that caused preinvoke to |
| * be called. |
| * @param oid the object id associated with object on |
| * which the request was made. |
| * @param adapter the reference for POA in which the |
| * object is being activated. |
| * @param operation the operation name. |
| * @param the_cookie an opaque value that can be set |
| * by the servant manager to be used |
| * during postinvoke. |
| * @return Servant used to process incoming request. |
| * @exception ForwardRequest to indicate to the ORB |
| * that it is responsible for delivering |
| * the current request and subsequent |
| * requests to the object denoted in the |
| * forward_reference member of the exception. |
| */ |
| Servant preinvoke( in ObjectId oid, in POA adapter, |
| in CORBA::Identifier operation, |
| out Cookie the_cookie ) |
| raises (ForwardRequest); |
| /** |
| * This operation is invoked whenener a servant completes |
| * a request. |
| * @param oid the object id ssociated with object on which |
| * the request was made. |
| * @param adapter the reference for POA in which the |
| * object was active. |
| * @param the_cookie an opaque value that contains |
| * the data set by preinvoke. |
| * @param the_servant reference to the servant that is |
| * associated with the object. |
| */ |
| void postinvoke( in ObjectId oid, in POA adapter, |
| in CORBA::Identifier operation, |
| in Cookie the_cookie, |
| in Servant the_servant); |
| }; |
| |
| |
| // ************************************************** |
| // |
| // POA interface |
| // |
| // ***************************************** |
| |
| /** |
| * A POA object manages the implementation of a |
| * collection of objects. The POA supports a name space |
| * for the objects, which are identified by Object Ids. |
| * A POA also provides a name space for POAs. A POA is |
| * created as a child of an existing POA, which forms a |
| * hierarchy starting with the root POA. A POA object |
| * must not be exported to other processes, or |
| * externalized with ORB::object_to_string. |
| */ |
| interface POA { |
| #pragma sun_local POA "" |
| #pragma version POA 2.3 |
| /** |
| * specifies that an child POA with the specified |
| * name already exists. |
| */ |
| exception AdapterAlreadyExists { }; |
| |
| /** |
| * This is raised if the POA with a specified Name cannot |
| * be found. |
| */ |
| exception AdapterNonExistent { }; |
| |
| /** |
| * This is raised if any of the policy objects are |
| * not valid for the ORB |
| */ |
| exception InvalidPolicy { |
| unsigned short index; |
| }; |
| |
| /** |
| * This is raised if no default servant is associated |
| * with the POA. |
| */ |
| exception NoServant { }; |
| |
| /** |
| * specifies that an object is already active or |
| * exists in the Active Object Map. |
| */ |
| exception ObjectAlreadyActive { }; |
| /** |
| * specifies that the object is not active or its |
| * mapping does not exist in the Active Object Map. |
| */ |
| |
| exception ObjectNotActive { }; |
| |
| /** |
| * This is raised when an attempt is made to activate |
| * a servant that is already active or has a mapping in |
| * the Active Object Map. |
| */ |
| exception ServantAlreadyActive { }; |
| |
| /** |
| * This is raised when an attempt is made to access a |
| * servant that is not active or is not registered in |
| * the Active Object Map. |
| */ |
| exception ServantNotActive { }; |
| |
| /** |
| * This is raised if the reference was not created by |
| * the POA |
| * specified in the reference. |
| */ |
| exception WrongAdapter { }; |
| |
| /** |
| * WrongPolicy is specified when the POA does not |
| * specify the policy appropriate for its operations. |
| */ |
| exception WrongPolicy { }; |
| |
| |
| //---------------------------------------- |
| // |
| // POA creation and destruction |
| // |
| //------------------------------- |
| |
| /** |
| * This operation creates a new POA as a child of the |
| * target POA. |
| * @param adapter_name identifies the new POA with |
| * respect to other POAs with the same parent POA. |
| * @param a_POAManager specifies the POA Manager to be |
| * associated with the new POA. |
| * @param policies specifies policy objects to be |
| * associated with the POA to control its behavior. |
| * @exception AdapterAlreadyExists specifies that the |
| * target POA already has a child POA with |
| * the specified name. |
| * @exception InvalidPolicy is raised if any of the |
| * policy objects are not valid for the ORB, |
| * or are in conflict, or require an |
| * administrative action that has not been |
| * performed. |
| */ |
| POA create_POA(in string adapter_name, |
| in POAManager a_POAManager, |
| in CORBA::PolicyList policies) |
| raises (AdapterAlreadyExists, InvalidPolicy); |
| |
| /** |
| * If the target POA is the parent of a child POA with |
| * the specified name (relative to the target POA), that |
| * child POA is returned. |
| * @param adapter_name POA name to be found. |
| * @param activate_it if a POA with the specified |
| * name does not exist and the value of |
| * the activate_it parameter is TRUE, the target |
| * POA's AdapterActivator, if one exists, |
| * is invoked. |
| * @return POA if one exists or is activated by the |
| * AdapterActivator. |
| * @return AdapterNonExistent is raised if POA with |
| * a specified name cannot be found or |
| * activated using AdapaterActivator. |
| */ |
| POA find_POA(in string adapter_name, |
| in boolean activate_it) |
| raises (AdapterNonExistent); |
| |
| /** |
| * This operation destroys the POA and all descendant |
| * POAs. All descendant POAs are destroyed (recursively) |
| * before the destruction of the containing POA. The POA |
| * so destroyed (that is, the POA with its name) may be |
| * re-created later in the same process. |
| * @param etherealize_objects flag to indicate whether |
| * etherealize operation on servant manager needs |
| * to be called. |
| * @param wait_for_completion flag to indicate whether |
| * POA and its children need to wait for active |
| * requests and the etherealization to complete. |
| * |
| */ |
| void destroy( in boolean etherealize_objects, |
| in boolean wait_for_completion); |
| |
| // ************************************************** |
| // |
| // Factories for Policy objects |
| // |
| // ************ |
| /** |
| * These operations each return a reference to a policy |
| * object with the specified value. |
| * @param value policy type |
| * @return ThreadPolcy Object |
| */ |
| ThreadPolicy create_thread_policy( |
| in ThreadPolicyValue value); |
| /** |
| * These operations each return a reference to a policy |
| * object with the specified value. |
| * @param value policy type |
| * @return LifespanPolicy Object. |
| */ |
| LifespanPolicy create_lifespan_policy( |
| in LifespanPolicyValue value); |
| /** |
| * These operations each return a reference to a policy |
| * object with the specified value. |
| * @param value policy type |
| * @return IdUniquenessPolicy Object. |
| */ |
| IdUniquenessPolicy create_id_uniqueness_policy( |
| in IdUniquenessPolicyValue value); |
| /** |
| * These operations each return a reference to a policy |
| * object with the specified value. |
| * @param value policy type |
| * @return IdAssignmentPolicy Object. |
| */ |
| IdAssignmentPolicy create_id_assignment_policy( |
| in IdAssignmentPolicyValue value); |
| /** |
| * These operations each return a reference to a policy |
| * object with the specified value. |
| * @param value policy type |
| * @return ImplicitActivationPolicy Object. |
| */ |
| ImplicitActivationPolicy create_implicit_activation_policy( |
| in ImplicitActivationPolicyValue value); |
| /** |
| * These operations each return a reference to a policy |
| * object with the specified value. |
| * @param value policy type |
| * @return ServantRetentionPolicy Object. |
| */ |
| ServantRetentionPolicy create_servant_retention_policy( |
| in ServantRetentionPolicyValue value); |
| /** |
| * These operations each return a reference to a policy |
| * object with the specified value. |
| * @param value policy type |
| * @return RequestProcessingPolicy Object. |
| */ |
| |
| RequestProcessingPolicy create_request_processing_policy( |
| in RequestProcessingPolicyValue value); |
| |
| //-------------------------------------------------- |
| // |
| // POA attributes |
| // |
| //----------------------------------- |
| /** |
| * This attribute identifies the POA relative to its |
| * parent. This name is assigned when the POA is created. |
| */ |
| readonly attribute string the_name; |
| /** |
| * This attribute identifies the parent of the POA. |
| * The parent of the root POA is null. |
| */ |
| readonly attribute POA the_parent; |
| /** |
| * This attribute identifies the current set of all |
| * child POAs of the POA. The set of child POAs |
| * includes only the POA's immediate children, and |
| * not their descendants. |
| */ |
| readonly attribute POAList the_children; |
| /** |
| * This attribute identifies the POA manager |
| * associated with the POA. |
| */ |
| readonly attribute POAManager the_POAManager; |
| |
| /** |
| * This attribute identifies the adapter activator |
| * associated with the POA. |
| */ |
| attribute AdapterActivator the_activator; |
| |
| //-------------------------------------------------- |
| // |
| // Servant Manager registration: |
| // |
| //-------------------------------------------------- |
| /** |
| * |
| * If the ServantRetentionPolicy of the POA is RETAIN, |
| * then the ServantManager argument (imgr) shall support |
| * the ServantActivator interface. For a NON_RETAIN policy, |
| * the ServantManager shall support the ServantLocator |
| * interface. If the argument is nil, or does not support |
| * the required interface, then the OBJ_ADAPTER |
| * exception is raised. |
| * @return ServantManager associated with a POA or null if |
| * none exists. |
| * @exception WrongPolicy raised if the |
| * USE_SERVANT_MANAGER policy is not specified. |
| */ |
| ServantManager get_servant_manager() |
| raises (WrongPolicy); |
| /** |
| * |
| * This operation sets the default servant manager |
| * associated with the POA. This operation may only be |
| * invoked once after a POA has been created. Attempting |
| * to set the servant manager after one has already |
| * been set will result in the BAD_INV_ORDER exception |
| * being raised. |
| * @param imgr servant manager to be used as a default. |
| * @exception WrongPolicy raised if the |
| * USE_SERVANT_MANAGER policy is not specified. |
| */ |
| void set_servant_manager( in ServantManager imgr) |
| raises (WrongPolicy); |
| |
| //-------------------------------------------------- |
| // |
| // operations for the USE_DEFAULT_SERVANT policy |
| // |
| //---------- |
| /** |
| * This operation returns the default servant associated |
| * with the POA. |
| * @return p_servant default servant associated with a POA. |
| * @exception NoServant raised if no default servant is |
| * associated with the POA. |
| * @exception WrongPolicy raised if the |
| * USE_DEFAULT_SERVANT policy is not specified. |
| */ |
| Servant get_servant() |
| raises (NoServant, WrongPolicy); |
| |
| /** |
| * |
| * This operation registers the specified servant with |
| * the POA as the default servant. This servant will |
| * be used for all requests for which no servant is |
| * found in the Active Object Map. |
| * @param p_servant servant to be used as a default. |
| * @exception WrongPolicy raised if the |
| * USE_DEFAULT_SERVANT policy is not specified. |
| */ |
| void set_servant(in Servant p_servant) |
| raises (WrongPolicy); |
| |
| // ************************************************** |
| // |
| // object activation and deactivation |
| // |
| // ************ |
| |
| /** |
| * |
| * This operation generates an Object Id and enters |
| * the Object Id and the specified servant in the |
| * Active Object Map. |
| * @param p_servant servant to be associated with an |
| * object to be activated. |
| * @return POA generated object id. |
| * @exception ServantAlreadyActive is raised if the |
| * POA has UNIQUE_ID policy and servant is |
| * is already in the Active Object Map. |
| * @exception WrongPolicy raised if the SYSTEM_ID and |
| * RETAIN policies are not specified. |
| */ |
| ObjectId activate_object( in Servant p_servant ) |
| raises (ServantAlreadyActive, WrongPolicy); |
| /** |
| * This operation enters an association between the |
| * specified Object Id and the specified servant in the |
| * Active Object Map. |
| * @param id object id for the object to be activated. |
| * @param p_servant servant to be associated with the |
| * object. |
| * @exception ServantAlreadyActive raised if the POA |
| * has the UNIQUE_ID policy and the servant |
| * is already in the Active Object Map. |
| * @exception ObjectAlreadyActive raised if the object is |
| * already active in the POA. |
| * @exception WrongPolicy raised if the RETAIN policy is |
| * is not specified. |
| */ |
| |
| void activate_object_with_id( in ObjectId id, |
| in Servant p_servant) |
| raises ( ServantAlreadyActive, ObjectAlreadyActive, |
| WrongPolicy); |
| /** |
| * |
| * This operation causes the ObjectId specified in the |
| * oid parameter to be deactivated. An ObjectId which |
| * has been deactivated continues to process requests |
| * until there are no active requests for that ObjectId. |
| * A deactivated ObjectId is removed from the Active |
| * Object Map when all requests executing for that |
| * ObjectId have completed. |
| * @param oid Object Id for the object to be deactivated. |
| * @exception ObjectNotActive if the object with the |
| * specified oid is not in the Active Object |
| * Map. |
| * @exception WrongPolicy raised if the RETAIN policy is |
| * is not specified. |
| */ |
| void deactivate_object(in ObjectId oid) |
| raises (ObjectNotActive, WrongPolicy); |
| |
| // ************************************************** |
| // |
| // reference creation operations |
| // |
| // ***************** |
| /** |
| * This operation creates an object reference that |
| * encapsulates a POA-generated Object Id value and |
| * the specified interface repository id. |
| * |
| * @param intf rep id for creating an object reference. |
| * @return object reference created using intf. |
| * @exception WrongPolicy if SYSTEM_ID policy is not |
| * specified. |
| */ |
| Object create_reference ( in CORBA::RepositoryId intf ) |
| raises (WrongPolicy); |
| |
| /** |
| * This operation creates an object reference that |
| * encapsulates the specified Object Id and interface |
| * repository Id values. It does not cause an activation |
| * to take place. The resulting reference may be passed |
| * to clients, so that subsequent requests on those |
| * references will cause the object to be activated |
| * if necessary, or the default servant used, depending |
| * on the applicable policies. |
| * @param oid object id for creating an objref |
| * @param intf rep id for creating an objref |
| * @return object reference created using oid and intf |
| * @exception BAD_PARAM is raised if the POA has the |
| * SYSTEM_ID policy and it detects that the |
| * Object Id value was not generated by the |
| * system or for this POA. |
| */ |
| Object create_reference_with_id ( in ObjectId oid, |
| in CORBA::RepositoryId intf ); |
| // not specified in 11.3.8.19 raises (WrongPolicy); |
| |
| //-------------------------------------------------- |
| // |
| // Identity mapping operations: |
| // |
| //-------------------------------------------------- |
| /** |
| * This operation has four possible behaviors. |
| * 1. If the POA has the UNIQUE_ID policy and the |
| * specified servant is active, the Object Id associated |
| * with that servant is returned. |
| * 2. If the POA has the IMPLICIT_ACTIVATION policy and |
| * either the POA has the MULTIPLE_ID policy or the |
| * specified servant is not active, the servant is |
| * activated using a POA-generated Object Id and the |
| * Interface Id associated with the servant, and that |
| * Object Id is returned. |
| * 3. If the POA has the USE_DEFAULT_SERVANT policy, |
| * the servant specified is the default servant, and the |
| * operation is being invoked in the context of executing |
| * a request on the default servant, then the ObjectId |
| * associated with the current invocation is returned. |
| * 4. Otherwise, the ServantNotActive exception is raised. |
| * |
| * @param p_servant servant for which the object disi returned. |
| * @return object id associated with the servant. |
| * @exception ServantNotActive if the above rules and |
| * policy combination is not met. |
| * @exception WrongPolicy if the USE_DEFAULT_SERVANT policy |
| * or a combination of the RETAIN policy and |
| * either the UNIQUE_ID or IMPLICIT_ACTIVATION |
| * policies are not present. |
| */ |
| ObjectId servant_to_id(in Servant p_servant) |
| raises (ServantNotActive, WrongPolicy); |
| |
| /** |
| * This operation requires the RETAIN policy and either |
| * the UNIQUE_ID or IMPLICIT_ACTIVATION policies if |
| * invoked outside the context of an operation dispatched |
| * by this POA. It has four possible behaviors. |
| * 1. If the POA has both the RETAIN and the |
| * UNIQUE_ID policy and the specified servant is active, |
| * an object reference encapsulating the information used |
| * to activate the servant is returned. |
| * 2. If the POA has both the RETAIN and the |
| * IMPLICIT_ACTIVATION policy and either the POA has the |
| * MULTIPLE_ID policy or the specified servant is not |
| * active, the servant is activated using a POA-generated |
| * Object Id and the Interface Id associated with the |
| * servant, and a corresponding object reference is |
| * returned. |
| * 3. If the operation was invoked in the context of |
| * executing a request on the specified servant, the |
| * reference associated with the current invocation |
| * is returned. |
| * 4. Otherwise, the ServantNotActive exception is raised. |
| * |
| * @param p_servant servant for which the object reference |
| * needs to be obtained. |
| * @return object reference associated with the servant. |
| * @exception WrongPolicy if the operation is not invoked |
| * in the context of executing a request on |
| * the specified servant and the required |
| * policies are not present. |
| * @exception ServantNotActive if the above specified |
| * policies and rules are not met. |
| */ |
| Object servant_to_reference(in Servant p_servant) |
| raises (ServantNotActive, WrongPolicy); |
| |
| /** |
| * If the POA has the RETAIN policy and the specified |
| * object is present in the Active Object Map, this |
| * operation returns the servant associated with that |
| * object in the Active Object Map. Otherwise, if the |
| * POA has the USE_DEFAULT_SERVANT policy and a default |
| * servant has been registered with the POA, this |
| * operation returns the default servant. If the object |
| * reference was not created by this POA, |
| * the WrongAdapter exception is raised. (OMG Issue |
| * on inconsistency with the POA.IDL. |
| * |
| * @param reference object reference for which the |
| * servant is returned. |
| * @return servant associated with the reference. |
| * @exception WrongPolicy if neither the RETAIN policy or |
| * the USE_DEFAULT_SERVANT policy is present. |
| * @exception ObjectNotActive if the servant is not |
| * present in the Active Object Map (for RETAIN) |
| * or no default servant is registered (for |
| * USE_DEFAULT_POLICY). |
| * @exception WrongAdapter if reference was not created by |
| * this POA instance. |
| */ |
| Servant reference_to_servant(in Object reference) |
| raises (ObjectNotActive, WrongPolicy, WrongAdapter); |
| |
| /** |
| * This operation returns the Object Id value |
| * encapsulated by the specified reference. This |
| * operation is valid only if the reference was created |
| * by the POA on which the operation is being performed. |
| * The object denoted by the reference does not have |
| * to be active for this operation to succeed. |
| * |
| * @param reference the object reference from which the |
| * object id needs to be returned. |
| * @return object id encapsulated in the reference. |
| * @exception WrongAdapter if the reference was not |
| * created by the POA specified in the |
| * reference. |
| * @exception WrongPolicy declared to allow future |
| * extensions. |
| * |
| */ |
| ObjectId reference_to_id(in Object reference) |
| raises (WrongAdapter, WrongPolicy); |
| |
| /** |
| * If the POA has the RETAIN policy and the specified |
| * ObjectId is in the Active Object Map, this operation |
| * returns the servant associated with that object in |
| * the Active Object Map. Otherwise, if the POA has |
| * the USE_DEFAULT_SERVANT policy and a default servant |
| * has been registered with the POA, this operation |
| * returns the default servant. |
| * |
| * @param oid object id for the which the servant is |
| * returned. |
| * @return servant associated with oid. |
| * @exception ObjectNotActive is raised if ObjectId is |
| * is not in the Active Object Map (for RETAIN |
| * policy), or no default servant is registered |
| * (for USE_DEFAULT_SERVANT policy). |
| * |
| * @exception WrongPolicy is raised if the RETAIN policy |
| * or the USE_DEFAULT_SERVANT |
| * policy is not present. |
| */ |
| Servant id_to_servant(in ObjectId oid) |
| raises (ObjectNotActive, WrongPolicy); |
| |
| /** |
| * If an object with the specified Object Id value is |
| * currently active, a reference encapsulating the |
| * information used to activate the object is returned. |
| * |
| * @param oid id of the object for which the |
| * reference is returned. |
| * @return the object reference |
| * |
| * @exception ObjectNotActive if the Object Id value |
| * is not active in the POA. |
| * @exception WrongPolicy if the RETAIN policy is not |
| * present. |
| */ |
| Object id_to_reference(in ObjectId oid) |
| raises (ObjectNotActive, WrongPolicy); |
| |
| /** |
| * This returns the unique id of the POA in the process in which it |
| * is created. It is for use by portable interceptors. |
| * <p> |
| * This id is guaranteed unique for the life span of the POA in the |
| * process. For persistent POAs, this means that if a POA is created |
| * in the same path with the same name as another POA, these POAs |
| * are identical and, therefore, have the same id. For transient |
| * POAs, each POA is unique. |
| */ |
| readonly attribute ::org::omg::CORBA::OctetSeq id; |
| |
| }; |
| |
| // ***************************************************** |
| // |
| // Current interface: |
| // |
| // ***************************************************** |
| |
| /** |
| * The PortableServer::Current interface, derived from |
| * CORBA::Current, provides method implementations with |
| * access to the identity of the object on which the |
| * method was invoked. The Current interface is provided |
| * to support servants that implement multiple objects, |
| * but can be used within the context of POA-dispatched |
| * method invocations on any servant. To provide location |
| * transparency, ORBs are required to support use of |
| * Current in the context of both locally and remotely |
| * invoked operations. An instance of Current can be |
| * obtained by the application by issuing the |
| * CORBA::ORB::resolve_initial_references("POACurrent") |
| * operation. Thereafter, it can be used within the |
| * context of a method dispatched by the POA to obtain |
| * the POA and ObjectId that identify the object on |
| * which that operation was invoked. |
| */ |
| interface Current : CORBA::Current { |
| #pragma sun_local Current "" |
| #pragma version Current 2.3 |
| /** |
| * The exception that is used to indicate that the |
| * operation is invoked outside the context of the |
| * POA-dispatched operation. |
| */ |
| |
| exception NoContext { }; |
| |
| /** |
| * Returns reference to the POA implementing the |
| * object in whose context it is called. |
| * |
| * @return The poa implementing the object |
| * |
| * @exception NoContext is raised when the operation is |
| * outside the context of a POA-dispatched |
| * operation |
| */ |
| POA get_POA() |
| raises (NoContext); |
| |
| /** |
| * Returns the ObjectId identifying the object in |
| * whose context it is called. |
| * |
| * @return the ObjectId of the object |
| * |
| * @exception NoContext is raised when the operation |
| * is called outside the context of a POA-dispatched |
| * operation. |
| */ |
| |
| ObjectId get_object_id() |
| raises (NoContext); |
| }; |
| }; |