summaryrefslogtreecommitdiff
path: root/trunk/TAO/tao/RTPortableServer/RT_POA.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/tao/RTPortableServer/RT_POA.h')
-rw-r--r--trunk/TAO/tao/RTPortableServer/RT_POA.h337
1 files changed, 337 insertions, 0 deletions
diff --git a/trunk/TAO/tao/RTPortableServer/RT_POA.h b/trunk/TAO/tao/RTPortableServer/RT_POA.h
new file mode 100644
index 00000000000..4f2937ff125
--- /dev/null
+++ b/trunk/TAO/tao/RTPortableServer/RT_POA.h
@@ -0,0 +1,337 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file RT_POA.h
+ *
+ * $Id$
+ *
+ * RT_POA
+ *
+ * @author Irfan Pyarali
+ */
+// ===================================================================
+
+#ifndef TAO_RT_POA_H
+#define TAO_RT_POA_H
+
+#include /**/ "ace/pre.h"
+
+#include "tao/RTPortableServer/rtportableserver_export.h"
+
+#include "tao/PortableServer/Regular_POA.h"
+#include "tao/orbconf.h"
+
+#if defined (TAO_HAS_CORBA_MESSAGING) && TAO_HAS_CORBA_MESSAGING != 0
+
+#define TAO_RT_PORTABLESERVER_SAFE_INCLUDE
+#include "tao/RTPortableServer/RTPortableServerC.h"
+#undef TAO_RT_PORTABLESERVER_SAFE_INCLUDE
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+// This is to remove "inherits via dominance" warnings from MSVC.
+// MSVC is being a little too paranoid.
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4250)
+#endif /* _MSC_VER */
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+class TAO_Thread_Pool;
+class TAO_Thread_Lane;
+class TAO_PriorityBandedConnectionPolicy;
+
+class TAO_RTPortableServer_Export TAO_RT_POA
+ : public virtual RTPortableServer::POA
+ , public virtual TAO_Regular_POA
+{
+public:
+
+ // RTCORBA specific methods
+ CORBA::Object_ptr create_reference_with_priority (const char * intf,
+ RTCORBA::Priority priority
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::WrongPolicy));
+
+ CORBA::Object_ptr create_reference_with_id_and_priority (const PortableServer::ObjectId & oid,
+ const char * intf,
+ RTCORBA::Priority priority
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::WrongPolicy));
+
+ PortableServer::ObjectId * activate_object_with_priority (PortableServer::Servant p_servant,
+ RTCORBA::Priority priority
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::ServantAlreadyActive,
+ PortableServer::POA::WrongPolicy));
+
+ void activate_object_with_id_and_priority (const PortableServer::ObjectId & oid,
+ PortableServer::Servant p_servant,
+ RTCORBA::Priority priority
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::ServantAlreadyActive,
+ PortableServer::POA::ObjectAlreadyActive,
+ PortableServer::POA::WrongPolicy));
+ // End RTCORBA specific methods
+
+ // Standard POA interface methods
+ PortableServer::POA_ptr create_POA (const char *adapter_name,
+ PortableServer::POAManager_ptr poa_manager,
+ const CORBA::PolicyList &policies
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::AdapterAlreadyExists,
+ PortableServer::POA::InvalidPolicy));
+
+ PortableServer::POA_ptr find_POA (const char *adapter_name,
+ CORBA::Boolean activate_it
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::AdapterNonExistent));
+
+ void destroy (CORBA::Boolean etherealize_objects,
+ CORBA::Boolean wait_for_completion
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+#if (TAO_HAS_MINIMUM_POA == 0) && !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO)
+
+ PortableServer::ThreadPolicy_ptr create_thread_policy (PortableServer::ThreadPolicyValue value
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+#endif /* TAO_HAS_MINIMUM_POA == 0 */
+
+#if !defined (CORBA_E_MICRO)
+ PortableServer::LifespanPolicy_ptr create_lifespan_policy (PortableServer::LifespanPolicyValue value
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+#endif
+
+#if !defined (CORBA_E_MICRO)
+ PortableServer::IdUniquenessPolicy_ptr create_id_uniqueness_policy (PortableServer::IdUniquenessPolicyValue value
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+#endif
+
+#if !defined (CORBA_E_MICRO)
+ PortableServer::IdAssignmentPolicy_ptr create_id_assignment_policy (PortableServer::IdAssignmentPolicyValue value
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+#endif
+
+#if (TAO_HAS_MINIMUM_POA == 0) && !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO)
+ PortableServer::ImplicitActivationPolicy_ptr create_implicit_activation_policy (PortableServer::ImplicitActivationPolicyValue value
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ PortableServer::ServantRetentionPolicy_ptr create_servant_retention_policy (PortableServer::ServantRetentionPolicyValue value
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ PortableServer::RequestProcessingPolicy_ptr create_request_processing_policy (PortableServer::RequestProcessingPolicyValue value
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+#endif /* TAO_HAS_MINIMUM_POA == 0 && !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO) */
+
+ char * the_name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ PortableServer::POA_ptr the_parent (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ PortableServer::POAList *the_children (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ PortableServer::POAManager_ptr the_POAManager (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+#if (TAO_HAS_MINIMUM_POA == 0) && !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO)
+
+ PortableServer::AdapterActivator_ptr the_activator (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void the_activator (PortableServer::AdapterActivator_ptr adapter_activator
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ PortableServer::ServantManager_ptr get_servant_manager (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::WrongPolicy));
+
+ void set_servant_manager (PortableServer::ServantManager_ptr imgr
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::WrongPolicy));
+
+ PortableServer::Servant get_servant (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::NoServant,
+ PortableServer::POA::WrongPolicy));
+
+ void set_servant (PortableServer::Servant servant
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::WrongPolicy));
+
+#endif /* TAO_HAS_MINIMUM_POA == 0 */
+
+ PortableServer::ObjectId *activate_object (PortableServer::Servant p_servant
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::ServantAlreadyActive,
+ PortableServer::POA::WrongPolicy));
+
+#if !defined (CORBA_E_MICRO)
+ void activate_object_with_id (const PortableServer::ObjectId &id,
+ PortableServer::Servant p_servant
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::ServantAlreadyActive,
+ PortableServer::POA::ObjectAlreadyActive,
+ PortableServer::POA::WrongPolicy));
+#endif
+
+ void deactivate_object (const PortableServer::ObjectId &oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::ObjectNotActive,
+ PortableServer::POA::WrongPolicy));
+
+ CORBA::Object_ptr create_reference (const char *intf
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::WrongPolicy));
+
+ CORBA::Object_ptr create_reference_with_id (const PortableServer::ObjectId &oid,
+ const char *intf
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ PortableServer::ObjectId *servant_to_id (PortableServer::Servant p_servant
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::ServantNotActive,
+ PortableServer::POA::WrongPolicy));
+
+ CORBA::Object_ptr servant_to_reference (PortableServer::Servant p_servant
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::ServantNotActive,
+ PortableServer::POA::WrongPolicy));
+
+ PortableServer::Servant reference_to_servant (CORBA::Object_ptr reference
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::ObjectNotActive,
+ PortableServer::POA::WrongAdapter,
+ PortableServer::POA::WrongPolicy));
+
+ PortableServer::ObjectId *reference_to_id (CORBA::Object_ptr reference
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::WrongAdapter,
+ PortableServer::POA::WrongPolicy));
+
+ PortableServer::Servant id_to_servant (const PortableServer::ObjectId &oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::ObjectNotActive,
+ PortableServer::POA::WrongPolicy));
+
+ CORBA::Object_ptr id_to_reference (const PortableServer::ObjectId &oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::POA::ObjectNotActive,
+ PortableServer::POA::WrongPolicy));
+
+ CORBA::OctetSeq *id (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // End standard POA interface methods.
+
+ virtual CORBA::PolicyList *client_exposed_policies (CORBA::Short object_priority
+ ACE_ENV_ARG_DECL);
+
+ TAO_RT_POA (const String &name,
+ PortableServer::POAManager_ptr poa_manager,
+ const TAO_POA_Policy_Set &policies,
+ TAO_Root_POA *parent,
+ ACE_Lock &lock,
+ TAO_SYNCH_MUTEX &thread_lock,
+ TAO_ORB_Core &orb_core,
+ TAO_Object_Adapter *object_adapter
+ ACE_ENV_ARG_DECL);
+
+ virtual ~TAO_RT_POA (void);
+
+ void *thread_pool (void) const;
+
+protected:
+
+ /// Template method for creating new POA's of this type.
+ virtual TAO_Root_POA *new_POA (const String &name,
+ PortableServer::POAManager_ptr poa_manager,
+ const TAO_POA_Policy_Set &policies,
+ TAO_Root_POA *parent,
+ ACE_Lock &lock,
+ TAO_SYNCH_MUTEX &thread_lock,
+ TAO_ORB_Core &orb_core,
+ TAO_Object_Adapter *object_adapter
+ ACE_ENV_ARG_DECL);
+
+ virtual TAO_Stub *key_to_stub_i (const TAO::ObjectKey &key,
+ const char *type_id,
+ CORBA::Short priority
+ ACE_ENV_ARG_DECL);
+
+ void validate_priority (RTCORBA::Priority priority
+ ACE_ENV_ARG_DECL);
+
+ void validate_policies (ACE_ENV_SINGLE_ARG_DECL);
+
+ /// Parse the policy list for RT policies and update our
+ /// cached policy instance.
+ void parse_rt_policies (TAO_POA_Policy_Set &policies
+ ACE_ENV_ARG_DECL);
+
+ size_t endpoint_count (void);
+
+ TAO_Stub *create_stub_object (const TAO::ObjectKey &object_key,
+ const char *type_id,
+ CORBA::PolicyList *policy_list,
+ TAO_Acceptor_Filter *filter,
+ TAO_PriorityBandedConnectionPolicy *priority_bands
+ ACE_ENV_ARG_DECL);
+
+ int lane_required (TAO_Thread_Lane *lane,
+ TAO_PriorityBandedConnectionPolicy *priority_bands);
+
+ TAO_Thread_Pool *thread_pool_;
+
+};
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif /* _MSC_VER */
+
+#if defined (__ACE_INLINE__)
+# include "tao/RTPortableServer/RT_POA.inl"
+#endif /* __ACE_INLINE__ */
+
+#endif /* TAO_HAS_CORBA_MESSAGING && TAO_HAS_CORBA_MESSAGING != 0 */
+
+#include /**/ "ace/post.h"
+
+#endif /* TAO_POA_H */