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

📄 providerregistrationmanager.cpp

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    Array <CIMInstance> _providerInstances;    Array <CIMInstance> _providerModuleInstances;    String providerName;    String providerModuleName;    Array<CIMName> requiredProperties;    provider.clear();    providerModule.clear();    ProviderRegistrationTable* providerCapability = 0;    ProviderRegistrationTable* _provider = 0;    ProviderRegistrationTable* _providerModule = 0;  try  {    const CIMNamespaceName & nameSpaceKey=CIMNamespaceName(WildCardNamespaceNames::check(nameSpace));    //    // create the key by using nameSpace, className, and providerType    //    String capabilityKey = _generateKey(nameSpaceKey, className, IND_PROVIDER);    //    // get provider capability instances from the table    //    if (! _registrationTable->table.lookup(capabilityKey, providerCapability))    {        PEG_METHOD_EXIT();        // l10n        // throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, CAPABILITY_NOT_REGISTERED);        throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,                                      MessageLoaderParms(CAPABILITY_NOT_REGISTERED_KEY,                                                         CAPABILITY_NOT_REGISTERED));    }    Array<CIMInstance> instances = providerCapability->getInstances();    for (Uint32 i=0; i < instances.size(); i++)    {        Array <String> _supportedProperties;        CIMValue value;        //        // get supported properties        //        Boolean suppPropIsNull = true;        Uint32 pos = instances[i].findProperty            (CIMName (_PROPERTY_SUPPORTEDPROPERTIES));        if (pos != PEG_NOT_FOUND)        {            value = instances[i].getProperty(pos).getValue();            if (!value.isNull())            {                suppPropIsNull = false;                value.get(_supportedProperties);            }        }        //        // get provider name        //        Uint32 pos2 = instances[i].findProperty            (CIMName (_PROPERTY_PROVIDERNAME));        if (pos2 == PEG_NOT_FOUND)        {            PEG_METHOD_EXIT();            // l10n            // throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED,            // PROVIDER_NAME_NOT_FOUND);            throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,                MessageLoaderParms(PROVIDER_NAME_NOT_FOUND_KEY,                    PROVIDER_NAME_NOT_FOUND));        }        instances[i].getProperty(pos2).getValue().get(providerName);        //        // get provider module name        //        Uint32 pos3 = instances[i].findProperty            (CIMName (_PROPERTY_PROVIDERMODULENAME));        if (pos3 == PEG_NOT_FOUND)        {            PEG_METHOD_EXIT();                // l10n            // throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED,            // MODULE_NAME_NOT_FOUND);                throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,                    MessageLoaderParms(MODULE_NAME_NOT_FOUND_KEY,                        MODULE_NAME_NOT_FOUND));        }        instances[i].getProperty(pos3).getValue().get(providerModuleName);        //        // create the key by using providerModuleName and providerName        //        String _providerKey = _generateKey(providerModuleName, providerName);        //        // create the key by using providerModuleName and MODULE_KEY        //        String _moduleKey = _generateKey(providerModuleName, MODULE_KEY);        if (suppPropIsNull)        {            //            // provider supportes all the properties            // get provider instance from the table            //            if (!_registrationTable->table.lookup(_providerKey, _provider))            {                PEG_METHOD_EXIT();                // l10n                // throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, PROVIDER_NOT_FOUND);                throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,                                              MessageLoaderParms(PROVIDER_NOT_FOUND_KEY,                                                                 PROVIDER_NOT_FOUND));            }            //            // get provider module instance from the table            //            if (!_registrationTable->table.lookup(_moduleKey, _providerModule))            {                PEG_METHOD_EXIT();                // l10n                // throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, MODULE_NOT_FOUND);                throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,                                              MessageLoaderParms(MODULE_NOT_FOUND_KEY,                                                                 MODULE_NOT_FOUND));            }            _providerInstances = _provider->getInstances();            _providerModuleInstances = _providerModule->getInstances();            //            // if the instance of the PG_Provider was not in the list, add the            // instance to the list, also, add the instance of the provider module            // to the list            if (!containsCIMInstance (provider, _providerInstances[0]))            {                provider.append(_providerInstances[0]);                providerModule.append(_providerModuleInstances[0]);            }        }        else        {            if (!requiredPropertyList.isNull())            {                //                // there is a list for the required properties                //                Boolean match = true;                requiredProperties = requiredPropertyList.getPropertyNameArray();                //                // Compare supported properties with required properties                //                for (Uint32 j=0; j < requiredProperties.size() && match; j++)                {                    if (!Contains (_supportedProperties,                        requiredProperties[j].getString()))                    {                        match = false;                    }                }                //                // Required properties are supported                //                if (match)                {                    //                    // get provider instance from the table by using                    // _providerKey to be key                        //                    if (!_registrationTable->table.lookup(_providerKey, _provider))                    {                        PEG_METHOD_EXIT();                        // l10n                        // throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, PROVIDER_NOT_FOUND);                        throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,                                                      MessageLoaderParms(PROVIDER_NOT_FOUND_KEY,                                                                         PROVIDER_NOT_FOUND));                    }                    _providerInstances = _provider->getInstances();                    //                    // get provider module instance from the table                    //                    if (!_registrationTable->table.lookup(_moduleKey, _providerModule))                    {                        PEG_METHOD_EXIT();                        // l10n                        // throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, MODULE_NOT_FOUND);                        throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,                                                      MessageLoaderParms(MODULE_NOT_FOUND_KEY,                                                                         MODULE_NOT_FOUND));                    }                    _providerModuleInstances = _providerModule->getInstances();                    //                    // if the instance of the PG_Provider was not in the list, add                    // the instance to the list; also, add the instance of the                    // provider module to the list                    //                    if (!containsCIMInstance (provider, _providerInstances[0]))                    {                        provider.append(_providerInstances[0]);                        providerModule.append(_providerModuleInstances[0]);                    }                }            }        }    }  }  catch (const CIMException &)  {    PEG_METHOD_EXIT();    return (false);  }    PEG_METHOD_EXIT();    return (true);}Boolean ProviderRegistrationManager::lookupIndicationConsumer(    const String & destinationPath,    CIMInstance & provider,    CIMInstance & providerModule){    String providerName;    String providerModuleName;    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,        "ProviderRegistrationManager::lookupIndicationConsumer");    ReadLock lock(_registrationTableLock);    ProviderRegistrationTable* consumerCapability = 0;    ProviderRegistrationTable* _provider= 0;    ProviderRegistrationTable* _providerModule = 0;    //    // create the key by using destinationPath and providerType    //    String consumerKey = _generateKey(destinationPath, CON_PROVIDER);    PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,                     "\ndestinationPath = " + destinationPath +                     "; consumerKey = " + consumerKey);    try    {        //        // get consumer capability instance from the table        //        if (!_registrationTable->table.lookup(                  consumerKey, consumerCapability))        {            //L10N TODO DONE            PEG_METHOD_EXIT();            //throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, CONSUMER_NOT_REGISTERED);            MessageLoaderParms parms(CONSUMER_NOT_REGISTERED_KEY, CONSUMER_NOT_REGISTERED);            throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,parms);        }        Array<CIMInstance> instances = consumerCapability->getInstances();        Uint32 pos = instances[0].findProperty(CIMName(_PROPERTY_PROVIDERNAME));        if (pos == PEG_NOT_FOUND)        {            //L10N TODO DONE            PEG_METHOD_EXIT();            //throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED,            //"Missing ProviderName which is key in PG_ConsumerCapabilities class.");            MessageLoaderParms parms("Server.ProviderRegistrationManager.ProviderRegistrationManager.MISSING_PROVIDERNAME_KEY_IN_CONSUMER_CAPABILITIES",                                     "Missing ProviderName which is key in PG_ConsumerCapabilities class.");            throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,parms);        }        //        // get provider name        //        instances[0].getProperty(pos).getValue().get(providerName);        //        // get provider module name        //        Uint32 pos2 = instances[0].findProperty            (CIMName (_PROPERTY_PROVIDERMODULENAME));        if (pos2 == PEG_NOT_FOUND)        {            //L10N TODO DONE            PEG_METHOD_EXIT();            //throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED,            //"Missing ProviderModuleName which is key in PG_ConsumerCapabilities class.");            MessageLoaderParms parms("Server.ProviderRegistrationManager.ProviderRegistrationManager.MISSING_PROVIDERMODULENAME_KEY_IN_CONSUMER_CAPABILITIES",                                     "Missing ProviderModuleName which is key in PG_ConsumerCapabilities class.");            throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,parms);        }        instances[0].getProperty(pos2).getValue().get(providerModuleName);        //        // create the key by using providerModuleName and providerName        //        String _providerKey = _generateKey(providerModuleName, providerName);        //        // create the key by using providerModuleName and MODULE_KEY        //        String _moduleKey = _generateKey(providerModuleName, MODULE_KEY);        //        // get provider instance from the table        //        if (!_registrationTable->table.lookup(_providerKey, _provider))        {            //L10N TODO DONE            PEG_METHOD_EXIT();            //throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, PROVIDER_NOT_FOUND);            MessageLoaderParms parms(PROVIDER_NOT_FOUND_KEY, PROVIDER_NOT_FOUND);            throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, parms);        }        Array<CIMInstance> providerInstances = _provider->getInstances();        provider = providerInstances[0];        //        // get provider module instance from the table        //        if (!_registrationTable->table.lookup(_moduleKey, _providerModule))        {            //L10N_ TODO DONE            PEG_METHOD_EXIT();            //throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, MODULE_NOT_FOUND);            MessageLoaderParms parms(MODULE_NOT_FOUND_KEY, MODULE_NOT_FOUND);            throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, parms);        }        Array<CIMInstance> providerModuleInstances = _providerModule->getInstances();        providerModule = providerModuleInstances[0];    }    catch(CIMException & exception)    {        Tracer::traceCIMException(TRC_PROVIDERMANAGER, Tracer::LEVEL4, exception);        PEG_METHOD_EXIT();        return (false);    }    PEG_METHOD_EXIT();    return (true);}// check entries of registration table, if an entry is found with same// moduleName, same providerName, and provider type includes indication,// return true; otherwise, return falseBoolean ProviderRegistrationManager::isIndicationProvider(    const String & moduleName,    const String & providerName){    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,        "ProviderRegistrationManager::isIndicationProvider");

⌨️ 快捷键说明

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