Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

TAO_PG_ObjectGroupManager Class Reference

PortableGroup::ObjectGroupManager implementation. More...

#include <PG_ObjectGroupManager.h>

Collaboration diagram for TAO_PG_ObjectGroupManager:

Collaboration graph
[legend]
List of all members.

Public Methods

 TAO_PG_ObjectGroupManager (void)
 Constructor. More...

 ~TAO_PG_ObjectGroupManager (void)
 Destructor. More...

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)
void destroy_object_group (const PortableServer::ObjectId &oid ACE_ENV_ARG_DECL)
PortableGroup::Propertiesget_properties (PortableGroup::ObjectGroup_ptr object_group ACE_ENV_ARG_DECL) throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound)
 Return the properties set when the object group was created, and the dynamic properties that may have overridden them. More...

char * type_id (PortableGroup::ObjectGroup_ptr object_group ACE_ENV_ARG_DECL)
 Return the type_id for the given object group. More...

PortableGroup::ObjectGroup_ptr object_group (const PortableServer::ObjectId &oid)
void poa (PortableServer::POA_ptr p)
 Set the POA to use when converting object group references to ObjectIds. More...

PortableGroup::ObjectGroupManager methods
Methods required by the PortableGroup::ObjectGroupManager interface.

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) throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound, PortableGroup::MemberAlreadyPresent, PortableGroup::NoFactory, PortableGroup::ObjectNotCreated, PortableGroup::InvalidCriteria, PortableGroup::CannotMeetCriteria)
 Create a member and add it to the given object group. More...

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) throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound, PortableGroup::MemberAlreadyPresent, PortableGroup::ObjectNotAdded)
 Add an existing object to the ObjectGroup. More...

virtual PortableGroup::ObjectGroup_ptr remove_member (PortableGroup::ObjectGroup_ptr object_group, const PortableGroup::Location &the_location ACE_ENV_ARG_DECL_WITH_DEFAULTS) throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound, PortableGroup::MemberNotFound)
 Remove an object at a specific location from the given ObjectGroup. More...

virtual PortableGroup::Locationslocations_of_members (PortableGroup::ObjectGroup_ptr object_group ACE_ENV_ARG_DECL_WITH_DEFAULTS) throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound)
 Return the locations of the members in the given ObjectGroup. More...

virtual PortableGroup::ObjectGroupId get_object_group_id (PortableGroup::ObjectGroup_ptr object_group ACE_ENV_ARG_DECL_WITH_DEFAULTS) throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound)
 Return the ObjectGroupId for the given ObjectGroup.
Note:
Does this method make sense for load balanced objects?
More...


virtual PortableGroup::ObjectGroup_ptr get_object_group_ref (PortableGroup::ObjectGroup_ptr object_group ACE_ENV_ARG_DECL_WITH_DEFAULTS) throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound)
 
Note:
Does this method make sense for load balanced objects?
More...


virtual CORBA::Object_ptr get_member_ref (PortableGroup::ObjectGroup_ptr object_group, const PortableGroup::Location &loc ACE_ENV_ARG_DECL_WITH_DEFAULTS) throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound, PortableGroup::MemberNotFound)
 Return the reference corresponding to the member of a given ObjectGroup at the given location. More...


Protected Methods

TAO_PG_ObjectGroup_Map_Entryget_group_entry (PortableGroup::ObjectGroup_ptr object_group ACE_ENV_ARG_DECL) throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound)
 Obtain the ObjectGroup hash map entry corresponding to the given ObjectGroup reference. More...

CORBA::Boolean member_already_present (const TAO_PG_ObjectGroup_Array &groups, TAO_PG_ObjectGroup_Map_Entry *group_entry)
 A member is actually represented by the object group to which it belongs. More...

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 Attributes

PortableServer::POA_var poa_
 Reference to the POA that created the object group references. More...

TAO_PG_ObjectGroup_Map object_group_map_
 The underlying table that contains all object group information. More...

TAO_PG_Location_Map location_map_
 Map that contains list of all members at a given location, in addition to the load monitor at that location. More...

TAO_SYNCH_MUTEX lock_
 Lock used to synchronize access to the underlying tables. More...


Detailed Description

PortableGroup::ObjectGroupManager implementation.

The ObjectGroupManager provides the interface necessary to facilitate application-controlled object group membership.


Constructor & Destructor Documentation

TAO_PG_ObjectGroupManager::TAO_PG_ObjectGroupManager void   
 

Constructor.

TAO_PG_ObjectGroupManager::~TAO_PG_ObjectGroupManager void   
 

Destructor.


Member Function Documentation

PortableGroup::ObjectGroup_ptr TAO_PG_ObjectGroupManager::add_member PortableGroup::ObjectGroup_ptr    object_group,
const PortableGroup::Location   the_location,
CORBA::Object_ptr member    ACE_ENV_ARG_DECL
throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound, PortableGroup::MemberAlreadyPresent, PortableGroup::ObjectNotAdded) [virtual]
 

Add an existing object to the ObjectGroup.

virtual PortableGroup::ObjectGroup_ptr TAO_PG_ObjectGroupManager::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
throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound, PortableGroup::MemberAlreadyPresent, PortableGroup::NoFactory, PortableGroup::ObjectNotCreated, PortableGroup::InvalidCriteria, PortableGroup::CannotMeetCriteria) [virtual]
 

Create a member and add it to the given object group.

PortableGroup::ObjectGroup_ptr TAO_PG_ObjectGroupManager::create_object_group CORBA::ULong    group_id,
const PortableServer::ObjectId   oid,
const char *    type_id,
const PortableGroup::Criteria &the_criteria    ACE_ENV_ARG_DECL
 

Note:
This method is used mainly by the GenericFactory::create_object() method.

void TAO_PG_ObjectGroupManager::destroy_object_group const PortableServer::ObjectId &oid    ACE_ENV_ARG_DECL
 

Note:
This method is used mainly by the GenericFactory::delete_object() method.

TAO_PG_ObjectGroup_Map_Entry* TAO_PG_ObjectGroupManager::get_group_entry PortableGroup::ObjectGroup_ptr object_group    ACE_ENV_ARG_DECL throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound) [protected]
 

Obtain the ObjectGroup hash map entry corresponding to the given ObjectGroup reference.

CORBA::Object_ptr TAO_PG_ObjectGroupManager::get_member_ref PortableGroup::ObjectGroup_ptr    object_group,
const PortableGroup::Location &loc    ACE_ENV_ARG_DECL
throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound, PortableGroup::MemberNotFound) [virtual]
 

Return the reference corresponding to the member of a given ObjectGroup at the given location.

PortableGroup::ObjectGroupId TAO_PG_ObjectGroupManager::get_object_group_id PortableGroup::ObjectGroup_ptr object_group    ACE_ENV_ARG_DECL throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound) [virtual]
 

Return the ObjectGroupId for the given ObjectGroup.

Note:
Does this method make sense for load balanced objects?

PortableGroup::ObjectGroup_ptr TAO_PG_ObjectGroupManager::get_object_group_ref PortableGroup::ObjectGroup_ptr object_group    ACE_ENV_ARG_DECL throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound) [virtual]
 

Note:
Does this method make sense for load balanced objects?

PortableGroup::Properties * TAO_PG_ObjectGroupManager::get_properties PortableGroup::ObjectGroup_ptr object_group    ACE_ENV_ARG_DECL throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound)
 

Return the properties set when the object group was created, and the dynamic properties that may have overridden them.

PortableGroup::Locations * TAO_PG_ObjectGroupManager::locations_of_members PortableGroup::ObjectGroup_ptr object_group    ACE_ENV_ARG_DECL throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound) [virtual]
 

Return the locations of the members in the given ObjectGroup.

CORBA::Boolean TAO_PG_ObjectGroupManager::member_already_present const TAO_PG_ObjectGroup_Array   groups,
TAO_PG_ObjectGroup_Map_Entry   group_entry
[protected]
 

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.

PortableGroup::ObjectGroup_ptr TAO_PG_ObjectGroupManager::object_group const PortableServer::ObjectId   oid
 

Returns:
Returns PortableGroup::ObjectGroup::_nil() if no object group corresponding to the given ObjectId exists.

void TAO_PG_ObjectGroupManager::poa PortableServer::POA_ptr    p
 

Set the POA to use when converting object group references to ObjectIds.

virtual PortableGroup::ObjectGroup_ptr TAO_PG_ObjectGroupManager::remove_member PortableGroup::ObjectGroup_ptr    object_group,
const PortableGroup::Location &the_location    ACE_ENV_ARG_DECL_WITH_DEFAULTS
throw (CORBA::SystemException, PortableGroup::ObjectGroupNotFound, PortableGroup::MemberNotFound) [virtual]
 

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.

char * TAO_PG_ObjectGroupManager::type_id PortableGroup::ObjectGroup_ptr object_group    ACE_ENV_ARG_DECL
 

Return the type_id for the given object group.

CORBA::Boolean TAO_PG_ObjectGroupManager::valid_type_id PortableGroup::ObjectGroup_ptr    object_group,
TAO_PG_ObjectGroup_Map_Entry   group_entry,
CORBA::Object_ptr member    ACE_ENV_ARG_DECL
[protected]
 

Todo:
Strategize this -- e.g. strict type checking.


Member Data Documentation

TAO_PG_Location_Map TAO_PG_ObjectGroupManager::location_map_ [private]
 

Map that contains list of all members at a given location, in addition to the load monitor at that location.

TAO_SYNCH_MUTEX TAO_PG_ObjectGroupManager::lock_ [private]
 

Lock used to synchronize access to the underlying tables.

TAO_PG_ObjectGroup_Map TAO_PG_ObjectGroupManager::object_group_map_ [private]
 

The underlying table that contains all object group information.

PortableServer::POA_var TAO_PG_ObjectGroupManager::poa_ [private]
 

Reference to the POA that created the object group references.


The documentation for this class was generated from the following files:
Generated on Thu Oct 10 22:28:21 2002 for TAO_PortableGroup by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001