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

📄 cimsubinterop.cpp

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//%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 <Pegasus/Common/Config.h>#include <Pegasus/Common/Constants.h>#include <Pegasus/Common/CIMType.h>#include <Pegasus/Common/CIMName.h>#include <Pegasus/Common/CIMInstance.h>#include <Pegasus/Common/CIMProperty.h>#include <Pegasus/Common/CIMValue.h>#include <Pegasus/Common/System.h>#include <Pegasus/Common/InternalException.h>#include <Pegasus/Client/CIMClient.h>PEGASUS_USING_PEGASUS;PEGASUS_USING_STD;#define IGNORE_EXCEPTION(FUNC) \    try \    { \        FUNC \    } \    catch (...) \    { \    }const CIMNamespaceName NAMESPACE = PEGASUS_NAMESPACENAME_INTEROP;const CIMNamespaceName NAMESPACE1 = CIMNamespaceName ("root/cimv2");const CIMNamespaceName NAMESPACE2 = CIMNamespaceName ("test/TestProvider");const CIMNamespaceName NAMESPACE3 = CIMNamespaceName ("root/SampleProvider");const CIMNamespaceName SOURCENAMESPACE =    CIMNamespaceName ("root/SampleProvider");const CIMNamespaceName NULL_NAMESPACE;Boolean verbose;void _createModuleInstance(    CIMClient & client,    const String & name,    const String & location){    CIMInstance moduleInstance(PEGASUS_CLASSNAME_PROVIDERMODULE);    moduleInstance.addProperty(CIMProperty(PEGASUS_PROPERTYNAME_NAME,        name));    moduleInstance.addProperty(CIMProperty(CIMName ("Vendor"),        String("Hewlett-Packard Company")));    moduleInstance.addProperty(CIMProperty(CIMName ("Version"),        String("2.0")));    moduleInstance.addProperty(CIMProperty(CIMName ("InterfaceType"),        String("C++Default")));    moduleInstance.addProperty(CIMProperty(CIMName ("InterfaceVersion"),        String("2.2.0")));    moduleInstance.addProperty(CIMProperty(CIMName ("Location"), location));    CIMObjectPath path = client.createInstance(        PEGASUS_NAMESPACENAME_INTEROP, moduleInstance);}void _createProviderInstance(    CIMClient & client,    const String & name,    const String & providerModuleName){    CIMInstance providerInstance(PEGASUS_CLASSNAME_PROVIDER);    providerInstance.addProperty(CIMProperty(PEGASUS_PROPERTYNAME_NAME,        name));    providerInstance.addProperty(CIMProperty(CIMName("ProviderModuleName"),        providerModuleName));    CIMObjectPath path = client.createInstance(        PEGASUS_NAMESPACENAME_INTEROP, providerInstance);}void _createCapabilityInstance(    CIMClient & client,    const String & providerModuleName,    const String & providerName,    const String & capabilityID,    const String & className,    const Array <String> & namespaces,    const Array <Uint16> & providerTypes,    const CIMPropertyList & supportedProperties){    CIMInstance capabilityInstance(PEGASUS_CLASSNAME_PROVIDERCAPABILITIES);    capabilityInstance.addProperty(CIMProperty(CIMName(       "ProviderModuleName"),        providerModuleName));    capabilityInstance.addProperty(CIMProperty(CIMName("ProviderName"),        providerName));    capabilityInstance.addProperty(CIMProperty(CIMName("CapabilityID"),        capabilityID));    capabilityInstance.addProperty(CIMProperty(CIMName("ClassName"),        className));    capabilityInstance.addProperty(CIMProperty(CIMName("Namespaces"),        namespaces));    capabilityInstance.addProperty(CIMProperty(CIMName("ProviderType"),        providerTypes));    if (!supportedProperties.isNull())    {        Array <String> propertyNameStrings;        for (Uint32 i = 0; i < supportedProperties.size(); i++)        {            propertyNameStrings.append(supportedProperties[i].getString());        }        capabilityInstance.addProperty(CIMProperty            (CIMName("supportedProperties"), propertyNameStrings));    }    CIMObjectPath path = client.createInstance(PEGASUS_NAMESPACENAME_INTEROP,        capabilityInstance);}void _modifyCapabilityInstance(    CIMClient & client,    const String & providerModuleName,    const String & providerName,    const String & capabilityID,    const CIMPropertyList & supportedProperties){    CIMInstance capabilityInstance(PEGASUS_CLASSNAME_PROVIDERCAPABILITIES);    if (!supportedProperties.isNull())    {        Array <String> propertyNameStrings;        for (Uint32 i = 0; i < supportedProperties.size(); i++)        {            propertyNameStrings.append(supportedProperties[i].getString());        }        capabilityInstance.addProperty(CIMProperty            (CIMName("SupportedProperties"), propertyNameStrings));    }    CIMObjectPath path;    Array <CIMKeyBinding> keyBindings;    keyBindings.append(CIMKeyBinding("ProviderModuleName", providerModuleName,        CIMKeyBinding::STRING));    keyBindings.append(CIMKeyBinding("ProviderName", providerName,        CIMKeyBinding::STRING));    keyBindings.append(CIMKeyBinding("CapabilityID", capabilityID,        CIMKeyBinding::STRING));    path.setClassName(PEGASUS_CLASSNAME_PROVIDERCAPABILITIES);    path.setKeyBindings(keyBindings);    capabilityInstance.setPath(path);    Array <CIMName> propertyNames;    propertyNames.append(CIMName("SupportedProperties"));    CIMPropertyList properties(propertyNames);    client.modifyInstance(PEGASUS_NAMESPACENAME_INTEROP, capabilityInstance,        false, properties);}void _addStringProperty(    CIMInstance & instance,    const String & name,    const String & value,    Boolean null = false,    Boolean isArray = false){    if (null)    {        instance.addProperty(CIMProperty(CIMName(name),            CIMValue(CIMTYPE_STRING, false)));    }    else    {        if (isArray)        {            Array <String> values;            values.append(value);            instance.addProperty(CIMProperty(CIMName(name), values));        }        else        {            instance.addProperty(CIMProperty(CIMName(name), value));        }    }}void _addUint16Property(    CIMInstance & instance,    const String & name,    Uint16 value,    Boolean null = false,    Boolean isArray = false){    if (null)    {        instance.addProperty(CIMProperty(CIMName(name),            CIMValue(CIMTYPE_UINT16, false)));    }    else    {        if (isArray)        {            Array <Uint16> values;            values.append(value);            instance.addProperty(CIMProperty(CIMName(name), values));        }        else        {            instance.addProperty(CIMProperty(CIMName(name), value));        }    }}void _addUint32Property(    CIMInstance & instance,    const String & name,    Uint32 value,    Boolean null = false,    Boolean isArray = false){    if (null)    {        instance.addProperty(CIMProperty(CIMName(name),            CIMValue(CIMTYPE_UINT32, false)));    }    else    {        if (isArray)        {            Array <Uint32> values;            values.append(value);            instance.addProperty(CIMProperty(CIMName(name), values));        }        else        {            instance.addProperty(CIMProperty(CIMName(name), value));        }    }}void _addUint64Property(    CIMInstance & instance,    const String & name,    Uint64 value,    Boolean null = false,    Boolean isArray = false){    if (null)    {        instance.addProperty(CIMProperty(CIMName(name),            CIMValue(CIMTYPE_UINT64, false)));    }    else    {        if (isArray)        {            Array <Uint64> values;            values.append(value);            instance.addProperty(CIMProperty(CIMName(name), values));        }        else        {            instance.addProperty(CIMProperty(CIMName(name), value));        }    }}CIMObjectPath _buildFilterOrHandlerPath(    const CIMName & className,    const String & name,    const String & host = String::EMPTY,    const CIMNamespaceName & namespaceName = CIMNamespaceName()){    CIMObjectPath path;    Array <CIMKeyBinding> keyBindings;    keyBindings.append(CIMKeyBinding("SystemCreationClassName",        System::getSystemCreationClassName(), CIMKeyBinding::STRING));    keyBindings.append(CIMKeyBinding("SystemName",        System::getFullyQualifiedHostName(), CIMKeyBinding::STRING));    keyBindings.append(CIMKeyBinding("CreationClassName",        className.getString(), CIMKeyBinding::STRING));    keyBindings.append(CIMKeyBinding(PEGASUS_PROPERTYNAME_NAME, name,        CIMKeyBinding::STRING));    path.setClassName(className);    path.setKeyBindings(keyBindings);    path.setNameSpace(namespaceName);    path.setHost(host);    return path;}CIMObjectPath _buildSubscriptionPath(    const String & filterName,    const CIMName & handlerClass,    const String & handlerName,    const String & filterHost = String::EMPTY,    const String & handlerHost = String::EMPTY,    const CIMNamespaceName & filterNS = NULL_NAMESPACE,    const CIMNamespaceName & handlerNS = CIMNamespaceName()){    CIMObjectPath filterPath = _buildFilterOrHandlerPath(        PEGASUS_CLASSNAME_INDFILTER, filterName, filterHost, filterNS);    CIMObjectPath handlerPath = _buildFilterOrHandlerPath(handlerClass,        handlerName, handlerHost, handlerNS);    Array<CIMKeyBinding> subscriptionKeyBindings;    subscriptionKeyBindings.append(CIMKeyBinding(        PEGASUS_PROPERTYNAME_FILTER, filterPath.toString(),        CIMKeyBinding::REFERENCE));    subscriptionKeyBindings.append(CIMKeyBinding(        PEGASUS_PROPERTYNAME_HANDLER,        handlerPath.toString(), CIMKeyBinding::REFERENCE));    CIMObjectPath subscriptionPath ("", CIMNamespaceName (),

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -