diff options
author | wilson_d <wilson_d@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-12-22 01:44:39 +0000 |
---|---|---|
committer | wilson_d <wilson_d@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-12-22 01:44:39 +0000 |
commit | 8baa9efef6fb74b6882c89ca6b198784a89e8256 (patch) | |
tree | 8262d7e8599334f6f03607a19fbea89556dd952f /TAO/orbsvcs/orbsvcs/PortableGroup.idl | |
parent | bee9b009502570c2ccda8417563f268d6a3c0087 (diff) | |
download | ATCD-8baa9efef6fb74b6882c89ca6b198784a89e8256.tar.gz |
ChangeLogTag: Sun Dec 21 19:35:44 2003 Dale Wilson <wilson_d@ociweb.com>
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/PortableGroup.idl')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/PortableGroup.idl | 123 |
1 files changed, 122 insertions, 1 deletions
diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup.idl b/TAO/orbsvcs/orbsvcs/PortableGroup.idl index e9351869313..d92d23fa567 100644 --- a/TAO/orbsvcs/orbsvcs/PortableGroup.idl +++ b/TAO/orbsvcs/orbsvcs/PortableGroup.idl @@ -11,7 +11,7 @@ #ifndef _PORTABLEGROUP_IDL_ #define _PORTABLEGROUP_IDL_ -#include <CosNaming.idl> +#include "CosNaming.idl" #include <tao/IOP.pidl> #include <tao/GIOP.pidl> #include <orb.idl> @@ -20,6 +20,18 @@ module PortableGroup { typeprefix PortableGroup "omg.org"; + /// MembershipStyle + const string PG_MEMBERSHIP_STYLE = "org.omg.PortableGroup.MembershipStyle"; + + /// InitialNumberMembers + const string PG_INITIAL_NUMBER_MEMBERS = "org.omg.PortableGroup.InitialNumberMembers"; + + /// MinimumNumberMembers + const string PG_MINIMUM_NUMBER_MEMBERS = "org.omg.PortableGroup.MinimumNumberMembers"; + + /// Factories + const string PG_FACTORIES = "org.omg.PortableGroup.Factories"; + // Specification for Interoperable Object Group References typedef string GroupDomainId; typedef unsigned long long ObjectGroupId; @@ -74,6 +86,8 @@ module PortableGroup exception MemberAlreadyPresent {}; exception ObjectNotCreated {}; exception ObjectNotAdded {}; + /// TAO Specific: TypeConfict exception + exception TypeConflict {}; exception UnsupportedProperty { Name nam; Value val; @@ -166,6 +180,11 @@ module PortableGroup in Location loc) raises (ObjectGroupNotFound, MemberNotFound); + // TAO-specific extension. + ObjectGroup get_object_group_ref_from_id ( + in ObjectGroupId group_id) + raises (ObjectGroupNotFound); + }; // end ObjectGroupManager @@ -187,6 +206,108 @@ module PortableGroup }; // end GenericFactory + /////////////////////// + // The following FactoryRegistry interface is not included in the OMG PortableGroup IDL. + // It's an extension needed as part of implementing the FT CORBA specification. + + + /** + * a name for the role the object will play + * This allows multiple objects that implement the same interface (TypeId) + * to exist at a location as long as they play different roles. + */ + typedef CORBA::Identifier RoleName; + + /** + * Reserved criteria name for specifing role. + */ + const string role_criterion = "org.omg.portablegroup.Role"; + + /** + * Interface to allow generic factories for replicas to register themselves. + * Factories are distinguished by the role to be played by the created-object (role) and the + * location at which they create the object (FactoryInfo.the_location) + * + * Because this is an extension to the FT CORBA specification applications that wish to + * adhere to the specification as written should use the type id as the role name when + * interacting with the FactoryRegistry. + */ + interface FactoryRegistry + { + /** + * register a factory to create objects of the given type + * at the location given in the FactoryInfo. + * + * @param role the role the object-to-be-created plays. + * @param type_id type id of the object-to-be-created. + * @param factory_info information about the factory including its location. + * @throws MemberAlreadyPresent if there is already a factory for this type of object + * at this location. + * @throws TypeConflict if the specified type_id is different from the type_id previously + * registered for this role. + */ + void register_factory(in RoleName role, in _TypeId type_id, in FactoryInfo factory_info) + raises (MemberAlreadyPresent, TypeConflict); + + /** + * Remove the registration of a factory. + * @param role the role played by the object formerly created by this factory. + * @param location where the factory formerly created objects. + * @throws MemberNotPresent if no factory is available for the given role at this location. + */ + void unregister_factory(in RoleName role, in Location location) + raises (MemberNotFound); + + /** + * Remove the registration of all factories that create a particular type of object. + * If no factories exist for the given type, the registry is unchanged. + * This is not an error. + * @param type_id the type of object formerly created by the factories to be unregistered. + */ + void unregister_factory_by_role(in RoleName role); + + /** + * Remove the registration of all factories that create objects at a particular location. + * If the location is unknown the registry is unchanged. + * This is not an error. + * @param location where the factories formerly created objects. + */ + void unregister_factory_by_location(in Location location); + + /** + * List all the factories that create objects that fill a given role + * If the role is unknown, an empty list is returned. This is not an error. + * @param role the type of object the factories create. + * @param type_id what type of object is created to fill this role. + */ + FactoryInfos list_factories_by_role(in RoleName role, out _TypeId type_id); + + /** + * List all the factories that create a objects at a given location. + * If no factories are registered for this location, an empty list is returned. + * This is not an error. + * @param location where the factories create objects. + */ + FactoryInfos list_factories_by_location(in Location location); + + }; // end of FactoryRegistry + + + const string TAO_UPDATE_OBJECT_GROUP_METHOD_NAME = "tao_update_object_group"; + + interface TAO_UpdateObjectGroup { + /** + * Pseudo used method to update IOGR in Object Group Members + * TAO specific. The CORBA spec. doesn't address the issue. + */ + void tao_update_object_group ( + in string iogr, + in PortableGroup::ObjectGroupRefVersion version, + in boolean is_primary); + }; + + + }; // end PortableGroup #endif /* _PORTABLEGROUP_IDL_ */ |