summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/PortableGroup/PG_GenericFactory.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/PortableGroup/PG_GenericFactory.h')
-rw-r--r--TAO/orbsvcs/orbsvcs/PortableGroup/PG_GenericFactory.h45
1 files changed, 43 insertions, 2 deletions
diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_GenericFactory.h b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_GenericFactory.h
index d1289d2c0e4..d0d89838dea 100644
--- a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_GenericFactory.h
+++ b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_GenericFactory.h
@@ -111,15 +111,56 @@ public:
CORBA::Boolean ignore_exceptions
ACE_ENV_ARG_DECL);
+ /// If the member corresponding to the given group ID and location
+ /// was created by the infrastructure, call delete_object() on the
+ /// remote GenericFactory that created it.
+ /**
+ * This method is only used by the TAO_PG_ObjectGroupManager class
+ * when ObjectGroupManager::remove_member() is explicitly called.
+ */
+ void delete_member (CORBA::ULong group_id,
+ const PortableGroup::Location & location
+ ACE_ENV_ARG_DECL);
+
+ /// Verify that the MinimumNumberMembers criterion is satisfied.
+ /**
+ * If the current number of members in the given object group is
+ * less than the MinimumNumberMembers criterion in effect for that
+ * group, the infrastructure will attempt create and add more
+ * members to the group by invoking any unused application-supplied
+ * GenericFactorys.
+ */
+ void check_minimum_number_members (
+ PortableGroup::ObjectGroup_ptr object_group,
+ CORBA::ULong group_id,
+ const char * type_id
+ ACE_ENV_ARG_DECL);
+
+ /// Create a new object group member using the supplied FactoryInfo
+ /// and RepositoryId and add it to the given object group.
+ /**
+ * @note This method is only used by the infrastructure.
+ */
+ PortableGroup::GenericFactory::FactoryCreationId * create_member (
+ PortableGroup::ObjectGroup_ptr object_group,
+ const PortableGroup::FactoryInfo & factory_info,
+ const char * type_id,
+ const CORBA::Boolean propagate_member_already_present
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableGroup::NoFactory,
+ PortableGroup::ObjectNotCreated,
+ PortableGroup::InvalidCriteria,
+ PortableGroup::InvalidProperty,
+ PortableGroup::CannotMeetCriteria));
+
private:
/// Populate the object group being created. Called when the
/// infrastructure-controlled membership style is used for the
/// object group being created.
void populate_object_group (
- const CORBA::ULong fcid,
PortableGroup::ObjectGroup_ptr object_group,
- const PortableServer::ObjectId & oid,
const char * type_id,
const PortableGroup::FactoryInfos &factory_infos,
const PortableGroup::InitialNumberMembersValue initial_number_members,