📄 service_type_repository.h
字号:
/* -*- C++ -*- */
//=============================================================================
/**
* @file Service_Type_Repository.h
*
* Service_Type_Repository.h,v 1.38 2003/08/18 06:42:15 ossama Exp
*
* @author Marina Spivak <marina@cs.wustl.edu>
* @author Seth Widoff <sbw1@cs.wustl.edu>
*/
//=============================================================================
#ifndef TAO_SERVICE_TYPE_REPOSITORY_H
#define TAO_SERVICE_TYPE_REPOSITORY_H
#include /**/ "ace/pre.h"
#include "Trader.h"
#include "ace/Hash_Map_Manager.h"
#include "ace/Null_Mutex.h"
/**
* @class TAO_Service_Type_Repository
*
* @brief This class implements CosTradingRepos::ServiceTypeRepository
* IDL interface.
*/
class TAO_Trading_Export TAO_Service_Type_Repository : public POA_CosTradingRepos::ServiceTypeRepository
{
public:
/**
* 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 (ACE_Lock *lock = 0);
~TAO_Service_Type_Repository (void);
virtual CosTradingRepos::ServiceTypeRepository::IncarnationNumber
incarnation (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException));
/**
* 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.
*/
virtual CosTradingRepos::ServiceTypeRepository::IncarnationNumber
add_type (const char *name,
const char *if_name,
const CosTradingRepos::ServiceTypeRepository::PropStructSeq &props,
const CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq &super_types
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTrading::IllegalServiceType,
CosTradingRepos::ServiceTypeRepository::ServiceTypeExists,
CosTradingRepos::ServiceTypeRepository::InterfaceTypeMismatch,
CosTrading::IllegalPropertyName,
CosTrading::DuplicatePropertyName,
CosTradingRepos::ServiceTypeRepository::ValueTypeRedefinition,
CosTrading::UnknownServiceType,
CosTradingRepos::ServiceTypeRepository::DuplicateServiceTypeName));
// 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.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -