summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.h')
-rw-r--r--TAO/orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.h314
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 */