📄 operationcontext.cpp
字号:
//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation, The Open Group.// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; Symantec Corporation; The Open Group.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions:// // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.////==============================================================================////%/////////////////////////////////////////////////////////////////////////////#include "OperationContext.h"#include "ArrayInternal.h"#include <Pegasus/Common/MessageLoader.h>PEGASUS_NAMESPACE_BEGIN//// OperationContext//class OperationContextRep{public: Array<OperationContext::Container*> containers;};OperationContext::OperationContext(){ _rep = new OperationContextRep;}OperationContext::OperationContext(const OperationContext& context){ _rep = new OperationContextRep; *this = context;}OperationContext::~OperationContext(){ clear(); delete _rep;}OperationContext& OperationContext::operator=(const OperationContext& context){ if (this == &context) { return *this; } clear(); for (Uint32 i = 0, n = context._rep->containers.size(); i < n; i++) { _rep->containers.append(context._rep->containers[i]->clone()); } return *this;}void OperationContext::clear(){ for (Uint32 i = 0, n = _rep->containers.size(); i < n; i++) { _rep->containers[i]->destroy(); } _rep->containers.clear();}const OperationContext::Container& OperationContext::get( const String& containerName) const{ Uint32 size = _rep->containers.size(); Container** data = (Container**)_rep->containers.getData(); for (; size--; data++) if (data[0]->getName() == containerName) return *(data[0]); static Exception _exception(MessageLoaderParms( "Common.OperationContext.OBJECT_NOT_FOUND", "object not found")); throw Exception(_exception);}Boolean OperationContext::contains( const String& containerName) const{ Uint32 size = _rep->containers.size(); Container** data = (Container**)_rep->containers.getData(); for (; size--; data++) { if (data[0]->getName() == containerName) return true; } return false;}void OperationContext::set(const OperationContext::Container& container){ for (Uint32 i = 0, n = _rep->containers.size(); i < n; i++) { if (container.getName() == _rep->containers[i]->getName()) { // delete previous container _rep->containers[i]->destroy(); _rep->containers.remove(i); // append current container _rep->containers.append(container.clone()); return; } } MessageLoaderParms parms( "Common.OperationContext.OBJECT_NOT_FOUND", "object not found"); throw Exception(parms);}void OperationContext::insert(const OperationContext::Container& container){ for (Uint32 i = 0, n = _rep->containers.size(); i < n; i++) { if (container.getName() == _rep->containers[i]->getName()) { MessageLoaderParms parms( "Common.OperationContext.OBJECT_ALREADY_EXISTS", "object already exists."); throw Exception(parms); } } _rep->containers.append(container.clone());}void OperationContext::remove(const String& containerName){ for (Uint32 i = 0, n = _rep->containers.size(); i < n; i++) { if (containerName == _rep->containers[i]->getName()) { _rep->containers[i]->destroy(); _rep->containers.remove(i); return; } } MessageLoaderParms parms( "Common.OperationContext.OBJECT_NOT_FOUND", "object not found"); throw Exception(parms);}//// OperationContext::Container//OperationContext::Container::~Container(){}//// IdentityContainer//class IdentityContainerRep{public: String userName;};const String IdentityContainer::NAME = "IdentityContainer";IdentityContainer::IdentityContainer( const OperationContext::Container& container){ const IdentityContainer* p = dynamic_cast<const IdentityContainer*>(&container); if (p == 0) { throw DynamicCastFailedException(); } _rep = new IdentityContainerRep(); _rep->userName = p->_rep->userName;}IdentityContainer::IdentityContainer(const IdentityContainer& container)#if defined(PEGASUS_PLATFORM_LINUX_GENERIC_GNU) || \ defined (PEGASUS_OS_DARWIN) : OperationContext::Container()#endif{ _rep = new IdentityContainerRep(); _rep->userName = container._rep->userName;}IdentityContainer::IdentityContainer(const String& userName){ _rep = new IdentityContainerRep(); _rep->userName = userName;}IdentityContainer::~IdentityContainer(){ delete _rep;}IdentityContainer& IdentityContainer::operator=( const IdentityContainer& container){ if (this == &container) { return *this; } _rep->userName = container._rep->userName; return *this;}String IdentityContainer::getName() const{ return NAME;}OperationContext::Container* IdentityContainer::clone() const{ return new IdentityContainer(_rep->userName);}void IdentityContainer::destroy(){ delete this;}String IdentityContainer::getUserName() const{ return _rep->userName;}//// SubscriptionInstanceContainer//class SubscriptionInstanceContainerRep{public: CIMInstance subscriptionInstance;};const String SubscriptionInstanceContainer::NAME = "SubscriptionInstanceContainer";SubscriptionInstanceContainer::SubscriptionInstanceContainer( const OperationContext::Container& container){ const SubscriptionInstanceContainer* p = dynamic_cast<const SubscriptionInstanceContainer*>(&container); if (p == 0) { throw DynamicCastFailedException(); } _rep = new SubscriptionInstanceContainerRep(); _rep->subscriptionInstance = p->_rep->subscriptionInstance;}SubscriptionInstanceContainer::SubscriptionInstanceContainer( const SubscriptionInstanceContainer& container)#if defined(PEGASUS_PLATFORM_LINUX_GENERIC_GNU) || \ defined(PEGASUS_OS_DARWIN) : OperationContext::Container()#endif{ _rep = new SubscriptionInstanceContainerRep(); _rep->subscriptionInstance = container._rep->subscriptionInstance;}SubscriptionInstanceContainer::SubscriptionInstanceContainer( const CIMInstance& subscriptionInstance){ _rep = new SubscriptionInstanceContainerRep(); _rep->subscriptionInstance = subscriptionInstance;}SubscriptionInstanceContainer::~SubscriptionInstanceContainer(){ delete _rep;}SubscriptionInstanceContainer& SubscriptionInstanceContainer::operator=( const SubscriptionInstanceContainer& container){ if (this == &container) { return *this; } _rep->subscriptionInstance = container._rep->subscriptionInstance; return *this;}String SubscriptionInstanceContainer::getName() const{ return NAME;}OperationContext::Container* SubscriptionInstanceContainer::clone() const{ return new SubscriptionInstanceContainer(_rep->subscriptionInstance);}void SubscriptionInstanceContainer::destroy(){ delete this;}CIMInstance SubscriptionInstanceContainer::getInstance() const{ return _rep->subscriptionInstance;}//// SubscriptionInstanceNamesContainer//class SubscriptionInstanceNamesContainerRep{public: Array<CIMObjectPath> subscriptionInstanceNames;};const String SubscriptionInstanceNamesContainer::NAME = "SubscriptionInstanceNamesContainer";SubscriptionInstanceNamesContainer::SubscriptionInstanceNamesContainer( const OperationContext::Container& container){ const SubscriptionInstanceNamesContainer* p = dynamic_cast<const SubscriptionInstanceNamesContainer*>(&container); if (p == 0) { throw DynamicCastFailedException(); } _rep = new SubscriptionInstanceNamesContainerRep(); _rep->subscriptionInstanceNames = p->_rep->subscriptionInstanceNames;}SubscriptionInstanceNamesContainer::SubscriptionInstanceNamesContainer( const SubscriptionInstanceNamesContainer& container)#if defined(PEGASUS_OS_DARWIN) : OperationContext::Container()#endif{ _rep = new SubscriptionInstanceNamesContainerRep(); _rep->subscriptionInstanceNames = container._rep->subscriptionInstanceNames;}SubscriptionInstanceNamesContainer::SubscriptionInstanceNamesContainer( const Array<CIMObjectPath>& subscriptionInstanceNames){ _rep = new SubscriptionInstanceNamesContainerRep(); _rep->subscriptionInstanceNames = subscriptionInstanceNames;}SubscriptionInstanceNamesContainer::~SubscriptionInstanceNamesContainer(){ delete _rep;}SubscriptionInstanceNamesContainer& SubscriptionInstanceNamesContainer::operator=( const SubscriptionInstanceNamesContainer& container){ if (this == &container) { return *this; } _rep->subscriptionInstanceNames = container._rep->subscriptionInstanceNames; return *this;}String SubscriptionInstanceNamesContainer::getName() const{ return NAME;}OperationContext::Container* SubscriptionInstanceNamesContainer::clone() const{ return new SubscriptionInstanceNamesContainer( _rep->subscriptionInstanceNames);}void SubscriptionInstanceNamesContainer::destroy(){ delete this;}Array<CIMObjectPath> SubscriptionInstanceNamesContainer::getInstanceNames() const{ return _rep->subscriptionInstanceNames;}//// SubscriptionFilterConditionContainer//class SubscriptionFilterConditionContainerRep{public: String filterCondition; String queryLanguage;};const String SubscriptionFilterConditionContainer::NAME = "SubscriptionFilterConditionContainer";SubscriptionFilterConditionContainer::SubscriptionFilterConditionContainer( const OperationContext::Container& container){ const SubscriptionFilterConditionContainer* p = dynamic_cast<const SubscriptionFilterConditionContainer*>(&container); if (p == 0) { throw DynamicCastFailedException(); } _rep = new SubscriptionFilterConditionContainerRep(); _rep->filterCondition = p->_rep->filterCondition; _rep->queryLanguage = p->_rep->queryLanguage;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -