diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.h')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.h | 314 |
1 files changed, 0 insertions, 314 deletions
diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.h b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.h deleted file mode 100644 index b78cc4028f3..00000000000 --- a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.h +++ /dev/null @@ -1,314 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file PG_ObjectGroupManager.h - * - * $Id$ - * - * @author Ossama Othman <ossama@uci.edu> - */ -//============================================================================= - - -#ifndef TAO_PG_OBJECT_GROUP_MANAGER_H -#define TAO_PG_OBJECT_GROUP_MANAGER_H - -#include /**/ "ace/pre.h" - -#include "orbsvcs/PortableGroup/portablegroup_export.h" -#include "orbsvcs/PortableGroupS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -#pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "orbsvcs/PortableGroup/PG_ObjectGroup_Map.h" -#include "orbsvcs/PortableGroup/PG_Location_Map.h" - -#include "tao/PortableServer/Key_Adapters.h" -#include "tao/PortableServer/PortableServerC.h" - - -TAO_BEGIN_VERSIONED_NAMESPACE_DECL - -/// Forward declarations -class TAO_PG_GenericFactory; - - -/** - * @class TAO_PG_ObjectGroupManager - * - * @brief PortableGroup::ObjectGroupManager implementation. - * - * The ObjectGroupManager provides the interface necessary to - * facilitate application-controlled object group membership. - */ -class TAO_PortableGroup_Export TAO_PG_ObjectGroupManager - : public virtual POA_PortableGroup::ObjectGroupManager -{ -public: - - /// Constructor. - TAO_PG_ObjectGroupManager (void); - - /// Destructor. - ~TAO_PG_ObjectGroupManager (void); - - /** - * @name PortableGroup::ObjectGroupManager methods - * - * Methods required by the PortableGroup::ObjectGroupManager - * interface. - */ - //@{ - - /// Create a member and add it to the given object group. - virtual PortableGroup::ObjectGroup_ptr create_member ( - PortableGroup::ObjectGroup_ptr object_group, - const PortableGroup::Location & the_location, - const char * type_id, - const PortableGroup::Criteria & the_criteria - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberAlreadyPresent, - PortableGroup::NoFactory, - PortableGroup::ObjectNotCreated, - PortableGroup::InvalidCriteria, - PortableGroup::CannotMeetCriteria)); - - /// Add an existing object to the ObjectGroup. - virtual PortableGroup::ObjectGroup_ptr add_member ( - PortableGroup::ObjectGroup_ptr object_group, - const PortableGroup::Location & the_location, - CORBA::Object_ptr member - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberAlreadyPresent, - PortableGroup::ObjectNotAdded)); - - /** - * Remove an object at a specific location from the given - * ObjectGroup. Deletion of application created objects must be - * deleted by the application. Objects created by the - * infrastructure (load balancer) will be deleted by the - * infrastructure. - */ - virtual PortableGroup::ObjectGroup_ptr remove_member ( - PortableGroup::ObjectGroup_ptr object_group, - const PortableGroup::Location & the_location - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberNotFound)); - - /// Return the locations of the members in the given ObjectGroup. - virtual PortableGroup::Locations * locations_of_members ( - PortableGroup::ObjectGroup_ptr object_group - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound)); - - /// Return the locations of the members in the given ObjectGroup. - virtual PortableGroup::ObjectGroups * groups_at_location ( - const PortableGroup::Location & the_location - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - /// Return the ObjectGroupId for the given ObjectGroup. - /// @note Does this method make sense for load balanced objects? - virtual PortableGroup::ObjectGroupId get_object_group_id ( - PortableGroup::ObjectGroup_ptr object_group - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound)); - - /// @note Does this method make sense for load balanced objects? - virtual PortableGroup::ObjectGroup_ptr get_object_group_ref ( - PortableGroup::ObjectGroup_ptr object_group - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound)); - - /// Return the reference corresponding to the member of a given - /// ObjectGroup at the given location. - virtual CORBA::Object_ptr get_member_ref ( - PortableGroup::ObjectGroup_ptr object_group, - const PortableGroup::Location & loc - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberNotFound)); - /** - * TAO-specific extension. - * Return the ObjectGroup reference for the given ObjectGroupId. - */ - virtual PortableGroup::ObjectGroup_ptr get_object_group_ref_from_id ( - PortableGroup::ObjectGroupId group_id - ACE_ENV_ARG_DECL_WITH_DEFAULTS - ) - ACE_THROW_SPEC (( - CORBA::SystemException - , PortableGroup::ObjectGroupNotFound - )); - - //@} - - /// TAO-specific member addition method. - /** - * This method is meant to be invoked by TAO's GenericFactory - * implementation. It is designed to allow only certain exceptions - * to be propagated to the caller, and to prevent redundant remote - * RepositoryId checking. - */ - PortableGroup::ObjectGroup_ptr _tao_add_member ( - PortableGroup::ObjectGroup_ptr object_group, - const PortableGroup::Location & the_location, - CORBA::Object_ptr member, - const char * type_id, - const CORBA::Boolean propagate_member_already_present - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::MemberAlreadyPresent, - PortableGroup::NoFactory)); - - /// Create object group hash map entry that represents an actual - /// ObjectGroup. - /** - * @note This method is used mainly by the - * GenericFactory::create_object() method. - */ - PortableGroup::ObjectGroup_ptr create_object_group ( - CORBA::ULong group_id, - const PortableServer::ObjectId &oid, - const char * type_id, - const PortableGroup::Criteria & the_criteria - ACE_ENV_ARG_DECL); - - /// Destroy the object group corresponding to the given ObjectId. - /** - * @note This method is used mainly by the - * GenericFactory::delete_object() method. - */ - void destroy_object_group (const PortableServer::ObjectId & oid - ACE_ENV_ARG_DECL); - - /// Return the properties set when the object group was created, and - /// the dynamic properties that may have overridden them. - PortableGroup::Properties * get_properties ( - PortableGroup::ObjectGroup_ptr object_group - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound)); - - /// Return the type_id for the given object group. - char * type_id (PortableGroup::ObjectGroup_ptr object_group - ACE_ENV_ARG_DECL); - - /// Return the object group associated with the given ObjectId. - /** - * @return Returns PortableGroup::ObjectGroup::_nil() if no object - * group corresponding to the given ObjectId exists. - */ - PortableGroup::ObjectGroup_ptr object_group ( - const PortableServer::ObjectId & oid); - - /// Return the number of members in the given object group. - CORBA::ULong member_count (PortableGroup::ObjectGroup_ptr group - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound)); - - /// Set the POA to use when converting object group references to - /// ObjectIds. - void poa (PortableServer::POA_ptr p); - - /// Set the pointer to the GenericFactory associated with this - /// ObjectGroupManager. - /** - * The TAO_PG_GenericFactory will only be used when - * ObjectGroupManager::remove_member() is explicitly called so that - * the infrastructure may be given an opportunity to clean up any - * object group members it may have created. - */ - void generic_factory (TAO_PG_GenericFactory * generic_factory); - -protected: - - /// Underlying and non-locking implementation of the add_member() - /// and _tao_add_member() methods in this class. - PortableGroup::ObjectGroup_ptr add_member_i ( - PortableGroup::ObjectGroup_ptr object_group, - const PortableGroup::Location & the_location, - CORBA::Object_ptr member, - const CORBA::Boolean check_type_id - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound, - PortableGroup::MemberAlreadyPresent, - PortableGroup::ObjectNotAdded)); - - /// Obtain the ObjectGroup hash map entry corresponding to the given - /// ObjectGroup reference. - TAO_PG_ObjectGroup_Map_Entry * get_group_entry ( - PortableGroup::ObjectGroup_ptr object_group - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableGroup::ObjectGroupNotFound)); - - - /// Check if a member resides at the location to which the group - /// array belongs to. - /** - * A member is actually represented by the object group to which it - * belongs. In this implementation, a pointer to a object group - * hash map entry is associated with a given a location. - */ - CORBA::Boolean member_already_present ( - const TAO_PG_ObjectGroup_Array & groups, - TAO_PG_ObjectGroup_Map_Entry * group_entry); - - /// get the position of the object_group_map_entry - size_t get_object_group_position ( - const TAO_PG_ObjectGroup_Array & groups, - TAO_PG_ObjectGroup_Map_Entry * group_entry); - - /// Verify that the member type_id matches the object group type_id. - /** - * @todo Strategize this -- e.g. strict type checking. - */ - CORBA::Boolean valid_type_id ( - PortableGroup::ObjectGroup_ptr object_group, - TAO_PG_ObjectGroup_Map_Entry * group_entry, - CORBA::Object_ptr member - ACE_ENV_ARG_DECL); - -private: - - /// Reference to the POA that created the object group references. - PortableServer::POA_var poa_; - - /// The underlying table that contains all object group - /// information. - TAO_PG_ObjectGroup_Map object_group_map_; - - /// Map that contains list of all members at a given location, in - /// addition to the load monitor at that location. - TAO_PG_Location_Map location_map_; - - /// Pointer to the TAO_PG_GenericFactory class responsible for - /// object group creation/destruction. - TAO_PG_GenericFactory * generic_factory_; - - /// Lock used to synchronize access to the underlying tables. - TAO_SYNCH_MUTEX lock_; - -}; - -TAO_END_VERSIONED_NAMESPACE_DECL - -#include /**/ "ace/post.h" - -#endif /* TAO_PG_OBJECT_GROUP_MANAGER_H */ |