⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 operationcontext.cpp

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//%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 + -