summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h')
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h298
1 files changed, 0 insertions, 298 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h b/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h
deleted file mode 100644
index 1be09f077cc..00000000000
--- a/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h
+++ /dev/null
@@ -1,298 +0,0 @@
-/* -*- C++ -*- */
-
-// ========================================================================
-// $Id$
-//
-// = LIBRARY
-// orbsvcs
-//
-// = FILENAME
-// Service_Type_Repository.h
-//
-// = AUTHOR
-// Marina Spivak <marina@cs.wustl.edu>
-// Seth Widoff <sbw1@cs.wustl.edu>
-//
-// ========================================================================
-
-#ifndef TAO_SERVICE_TYPE_REPOSITORY_H
-#define TAO_SERVICE_TYPE_REPOSITORY_H
-
-#include "Trader.h"
-
-class TAO_ORBSVCS_Export TAO_Service_Type_Repository :
- public POA_CosTradingRepos::ServiceTypeRepository
- //
- // = TITLE
- // This class implements CosTradingRepos::ServiceTypeRepository
- // IDL interface.
-{
-public:
-
- TAO_Service_Type_Repository (ACE_Lock* lock = 0);
- // Parameterize the Service_Type_Repository with a lock to serialize
- // access to the type repository map. A reader/writer lock is
- // probably best. The Service_Type_Repository assumes control of the
- // lock.
-
- ~TAO_Service_Type_Repository (void);
-
- virtual CosTradingRepos::ServiceTypeRepository::IncarnationNumber
- incarnation (CORBA::Environment& _env);
-
- virtual CosTradingRepos::ServiceTypeRepository::IncarnationNumber
- add_type (const char * name,
- const char * if_name,
- const CosTradingRepos::ServiceTypeRepository::PropStructSeq& props,
- const CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq& super_types,
- CORBA::Environment& _env)
- TAO_THROW_SPEC ((CORBA::SystemException,
- CosTrading::IllegalServiceType,
- CosTradingRepos::ServiceTypeRepository::ServiceTypeExists,
- CosTradingRepos::ServiceTypeRepository::InterfaceTypeMismatch,
- CosTrading::IllegalPropertyName,
- CosTrading::DuplicatePropertyName,
- CosTradingRepos::ServiceTypeRepository::ValueTypeRedefinition,
- CosTrading::UnknownServiceType,
- CosTradingRepos::ServiceTypeRepository::DuplicateServiceTypeName));
-
- // BEGIN SPEC
- // The add_type operation enables the creation of new service types
- // in the service type repository. The caller supplies the "name"
- // for the new type, the identifier for the interface associated
- // with instances of this service type, the properties definitions
- // for this service type, and the service type names of the
- // immediate super-types to this service type.
-
- // If the type creation is successful, an incarnation number is
- // returned as the value of the operation. Incarnation numbers are
- // opaque values that are assigned to each modification to the
- // repository's state. An incarnation number can be quoted when
- // invoking the list_types operation to retrieve all changes to the
- // service repository since a particular logical time. (Note:
- // IncarnationNumber is currently declared as a struct consisting of
- // two unsigned longs; what we really want here is an unsigned hyper
- // [64-bit integer]. A future revision task force should modify this
- // when CORBA systems support IDL 64-bit integers.)
-
- // If the "name" parameter is malformed, then the
- // CosTrading::IllegalServiceType exception is raised. ° If the type
- // already exists, then the ServiceTypeExists exception is raised. °
- // If the "if_name" parameter is not a sub-type of the interface
- // associated with a service type from which this service type is
- // derived, such that substitutability would be violated, then the
- // InterfaceTypeMismatch exception is raised. ° If a property name
- // supplied in the "props" parameter is malformed, the
- // CosTrading::IllegalPropertyName exception is raised. ° If the
- // same property name appears two or more times in the "props"
- // parameter, the CosTrading::DuplicatePropertyName exception is
- // raised. ° If a property value type associated with this service
- // type illegally modifies the value type of a super-type's
- // property, or if two super-types incompatibly declare value types
- // for the same property name, then the ValueTypeRedefinition
- // exception is raised. ° If one of the ServiceTypeNames in
- // "super_types" is malformed, then the
- // CosTrading::IllegalServiceType exception is raised. If one of the
- // ServiceTypeNames in "super_types" does not exist, then the
- // CosTrading::UnknownServiceType exception is raised. ° If the same
- // service type name is included two or more times in this
- // parameter, the DuplicateServiceTypeName exception is raised.
- // END SPEC
-
-
- virtual void remove_type (const char * name,
- CORBA::Environment& _env)
- TAO_THROW_SPEC ((CORBA::SystemException,
- CosTrading::IllegalServiceType,
- CosTrading::UnknownServiceType,
- CosTradingRepos::ServiceTypeRepository::HasSubTypes));
-
- // BEGIN SPEC
- // The remove_type operation removes the named type from the service
- // type repository. ° If "name" is malformed, then the
- // CosTrading::IllegalServiceType exception is raised. ° If "name"
- // does not exist within the repository, then the
- // CosTrading::UnknownServiceType exception is raised. ° If "name"
- // has a service type which has been derived from it, then the
- // HasSubTypes exception is raised.
- // END SPEC
-
- virtual CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq*
- list_types (const CosTradingRepos::ServiceTypeRepository::SpecifiedServiceTypes& which_types,
- CORBA::Environment& _env)
- TAO_THROW_SPEC ((CORBA::SystemException));
-
- // BEGIN SPEC
- // The list_types operation permits a client to obtain the names of
- // service types which are in the repository. The "which_types"
- // parameter permits the client to specify one of two possible
- // values: ° all types known to the repository ° all types
- // added/modified since a particular incarnation number The names of
- // the requested types are returned by the operation for subsequent
- // querying via the describe_type or the fully_describe_type
- // operation.
- // END SPEC
-
- virtual CosTradingRepos::ServiceTypeRepository::TypeStruct*
- describe_type (const char * name,
- CORBA::Environment& _env)
- TAO_THROW_SPEC ((CORBA::SystemException,
- CosTrading::IllegalServiceType,
- CosTrading::UnknownServiceType));
- // BEGIN SPEC
- // The describe_type operation permits a client to obtain the
- // details for a particular service type. ° If "name" is malformed,
- // then the CosTrading::IllegalServiceType exception is raised. ° If
- // "name" does not exist within the repository, then the
- // CosTrading::UnknownServiceType exception is raised.
- // END SPEC
-
- virtual CosTradingRepos::ServiceTypeRepository::TypeStruct*
- fully_describe_type (const char * name,
- CORBA::Environment& _env)
- TAO_THROW_SPEC ((CORBA::SystemException,
- CosTrading::IllegalServiceType,
- CosTrading::UnknownServiceType));
- // BEGIN SPEC
- // The fully_describe_type operation permits a client to obtain the
- // details for a particular service type. The property sequence
- // returned in the TypeStruct includes all properties inherited from
- // the transitive closure of its super types; the sequence of super
- // types in the TypeStruct contains the names of the types in the
- // transitive closure of the super type relation. ° If "name" is
- // malformed, then the CosTrading::IllegalServiceType exception is
- // raised. ° If "name" does not exist within the repository, then
- // the CosTrading::UnknownServiceType exception is raised.
- // END SPEC
-
- virtual void mask_type (const char * name,
- CORBA::Environment& _env)
- TAO_THROW_SPEC ((CORBA::SystemException,
- CosTrading::IllegalServiceType,
- CosTrading::UnknownServiceType,
- CosTradingRepos::ServiceTypeRepository::AlreadyMasked));
- // BEGIN SPEC
- // The mask_type operation permits the deprecation of a particular
- // type (i.e., after being masked, exporters will no longer be able
- // to advertise offers of that particular type). The type continues
- // to exist in the service repository due to other service types
- // being derived from it. ° If "name" is malformed, then the
- // CosTrading::IllegalServiceType exception is raised. ° If "name"
- // does not exist within the repository, then the
- // CosTrading::UnknownServiceType exception is raised. ° If the type
- // is currently in the masked state, then the AlreadyMasked
- // exception is raised.
- // END SPEC
-
- virtual void unmask_type (const char * name,
- CORBA::Environment& _env)
- TAO_THROW_SPEC ((CORBA::SystemException,
- CosTrading::IllegalServiceType,
- CosTrading::UnknownServiceType,
- CosTradingRepos::ServiceTypeRepository::NotMasked));
- // BEGIN SPEC
- // The unmask_type undeprecates a type (i.e., after being unmasked,
- // exporters will be able to resume advertisement of offers of that
- // particular type). ° If "name" is malformed, then the
- // CosTrading::IllegalServiceType exception is raised. ° If "name"
- // does not exist within the repository, then the
- // CosTrading::UnknownServiceType exception is raised. ° If the type
- // is not currently in the masked state, then the NotMasked
- // exception is raised.
- // END SPEC
-
-private:
-
- struct Type_Info
- {
- // storage structure for information pertinent to the type.
- CosTradingRepos::ServiceTypeRepository::TypeStruct type_struct_;
- // standard type info.
-
- CORBA::Boolean has_subtypes_;
- // names of subtypes.
- };
-
- typedef ACE_Hash_Map_Manager
- <
- TAO_String_Hash_Key,
- CosTradingRepos::ServiceTypeRepository::PropStruct*,
- ACE_Null_Mutex
- >
- Prop_Map;
-
- typedef ACE_Hash_Map_Manager
- <
- TAO_String_Hash_Key,
- Type_Info*,
- ACE_Null_Mutex
- >
- Service_Type_Map;
-
- void fully_describe_type_i (const CosTradingRepos::ServiceTypeRepository::TypeStruct& type_struct,
- CosTradingRepos::ServiceTypeRepository::PropStructSeq& props,
- CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq& super_types);
- // Build a sequence aggregating the property names from all
- // supertypes of the type, and a sequence representing the
- // transitive closure of the super type relation.
-
- void collect_inheritance_hierarchy (const CosTradingRepos::ServiceTypeRepository::TypeStruct& type_struct,
- TAO_String_Queue& target);
-
- void validate_properties (Prop_Map& prop_map,
- const CosTradingRepos::ServiceTypeRepository::PropStructSeq& props,
- CORBA::Environment& _env)
- TAO_THROW_SPEC ((CosTrading::IllegalPropertyName,
- CosTrading::DuplicatePropertyName));
- // Confirm that the properties in props have valid names, and aren't
- // duplicated. Cram those properties into the prop_map.
-
- void validate_supertypes (Service_Type_Map& super_map,
- const CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq& super_types,
- CORBA::Environment& _env)
- TAO_THROW_SPEC ((CosTrading::IllegalServiceType,
- CosTrading::UnknownServiceType,
- CosTrading::DuplicatePropertyName));
- // Confirm that the each super type exists, and cram them into super_map.
-
- void validate_inheritance (Prop_Map& prop_map,
- const CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq& super_types,
- CORBA::Environment& _env)
- TAO_THROW_SPEC ((CosTradingRepos::ServiceTypeRepository::ValueTypeRedefinition));
- // Ensure that properties of a super_type aren't having their types
- // or retstrictions redefined.
-
- // void validate_interface (const char* if_name,
- // Service_Type_Map& super_map,
- // CORBA::Environment& _env)
- // TAO_THROW_SPEC ((CosTradingRepos::ServiceTypeRepository::InterfaceTypeMismatch));
- // Ensure that the interface type derives from its superclasses'.
-
- void update_type_map (const char* name,
- const char * if_name,
- const CosTradingRepos::ServiceTypeRepository::PropStructSeq& props,
- const CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq& super_types,
- Prop_Map& prop_map,
- Service_Type_Map& super_map);
- // Update the type map with the information contained in the
- // TypeStruct, prop_map, and super_map.
-
- TAO_Service_Type_Repository (const TAO_Service_Type_Repository&);
- TAO_Service_Type_Repository& operator= (const TAO_Service_Type_Repository&);
-
- ACE_Lock* lock_;
- // Lock with which to serialize access to the service type map.
-
- Service_Type_Map type_map_;
- // Stores information for each service type in the repository.
- // This is a mapping from service type name to a Type_Info struct
- // which serves as a storage for various information for the given type.
-
- CosTradingRepos::ServiceTypeRepository::IncarnationNumber incarnation_;
- // incarnation number to be used for the next modification to the repository.
-};
-
-// This are temporary functions, until the format of the incarnation number
-// will be changed in the spec.
-
-#endif /* TAO_SERVICE_TYPE_REPOSITORY_H */