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

📄 subscriptionrepository.cpp

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 CPP
📖 第 1 页 / 共 3 页
字号:
void SubscriptionRepository::getFilterProperties (    const CIMInstance & subscription,    String & query,    CIMNamespaceName & sourceNameSpace){    PEG_METHOD_ENTER (TRC_INDICATION_SERVICE,        "SubscriptionRepository::getFilterProperties");    CIMValue filterValue;    CIMObjectPath filterReference;    CIMInstance filterInstance;    CIMNamespaceName nameSpaceName;    filterValue = subscription.getProperty (subscription.findProperty        (PEGASUS_PROPERTYNAME_FILTER)).getValue ();    filterValue.get (filterReference);    //    //  Get filter namespace - if not set in Filter reference property value,    //  namespace is the namespace of the subscription    //    nameSpaceName = filterReference.getNameSpace ();    if (nameSpaceName.isNull ())    {        nameSpaceName = subscription.getPath ().getNameSpace ();    }    try    {        filterInstance = _repository->getInstance (nameSpaceName,            filterReference);    }    catch (const Exception & exception)    {        PEG_TRACE_STRING (TRC_INDICATION_SERVICE_INTERNAL, Tracer::LEVEL2,            "Exception caught in getting filter instance (" +            filterReference.toString () + "): " +            exception.getMessage ());        PEG_METHOD_EXIT ();        throw;    }    query = filterInstance.getProperty (filterInstance.findProperty        (PEGASUS_PROPERTYNAME_QUERY)).getValue ().toString ();    sourceNameSpace = filterInstance.getProperty (filterInstance.findProperty        (_PROPERTY_SOURCENAMESPACE)).getValue ().toString ();    PEG_METHOD_EXIT ();}void SubscriptionRepository::getFilterProperties (    const CIMInstance & subscription,    String & query){    PEG_METHOD_ENTER (TRC_INDICATION_SERVICE,        "SubscriptionRepository::getFilterProperties");    CIMValue filterValue;    CIMObjectPath filterReference;    CIMInstance filterInstance;    CIMNamespaceName nameSpaceName;    filterValue = subscription.getProperty (subscription.findProperty        (PEGASUS_PROPERTYNAME_FILTER)).getValue ();    filterValue.get (filterReference);    //    //  Get filter namespace - if not set in Filter reference property value,    //  namespace is the namespace of the subscription    //    nameSpaceName = filterReference.getNameSpace ();    if (nameSpaceName.isNull ())    {        nameSpaceName = subscription.getPath ().getNameSpace ();    }    try    {        filterInstance = _repository->getInstance (nameSpaceName,            filterReference);    }    catch (const Exception & exception)    {        PEG_TRACE_STRING (TRC_INDICATION_SERVICE_INTERNAL, Tracer::LEVEL2,            "Exception caught in getting filter instance (" +            filterReference.toString () + "): " +            exception.getMessage ());        PEG_METHOD_EXIT ();        throw;    }    query = filterInstance.getProperty (filterInstance.findProperty        (PEGASUS_PROPERTYNAME_QUERY)).getValue ().toString ();    PEG_METHOD_EXIT ();}Boolean SubscriptionRepository::validateIndicationClassName (    const CIMName & indicationClassName,    const CIMNamespaceName & nameSpaceName) const{    PEG_METHOD_ENTER (TRC_INDICATION_SERVICE,        "SubscriptionRepository::validateIndicationClassName");    //    //  Validate that class is an Indication class    //  The Indication Qualifier should exist and have the value True    //    Boolean validClass = false;    CIMClass theClass;    try    {        theClass = _repository->getClass (nameSpaceName, indicationClassName,            false, true, false, CIMPropertyList ());    }    catch (const Exception & exception)    {        PEG_TRACE_STRING (TRC_DISCARDED_DATA, Tracer::LEVEL2,            "Exception caught trying to get indication class (" +            indicationClassName.getString () + "): " +            exception.getMessage ());        PEG_METHOD_EXIT ();        throw;    }    if (theClass.findQualifier (_QUALIFIER_INDICATION) != PEG_NOT_FOUND)    {        CIMQualifier theQual = theClass.getQualifier (theClass.findQualifier            (_QUALIFIER_INDICATION));        CIMValue theVal = theQual.getValue ();        if (!theVal.isNull ())        {            Boolean indicationClass;            theVal.get (indicationClass);            validClass = indicationClass;        }    }    PEG_METHOD_EXIT ();    return validClass;}Array <CIMName> SubscriptionRepository::getIndicationSubclasses (        const CIMNamespaceName & nameSpace,        const CIMName & indicationClassName) const{    PEG_METHOD_ENTER (TRC_INDICATION_SERVICE,        "SubscriptionRepository::getIndicationSubclasses");    Array <CIMName> indicationSubclasses;    try    {        indicationSubclasses = _repository->enumerateClassNames            (nameSpace, indicationClassName, true);    }    catch (const Exception &)    {        PEG_METHOD_EXIT ();        throw;    }    indicationSubclasses.append (indicationClassName);    PEG_METHOD_EXIT ();    return indicationSubclasses;}Boolean SubscriptionRepository::reconcileFatalError (    const CIMInstance subscription){    PEG_METHOD_ENTER (TRC_INDICATION_SERVICE,        "SubscriptionRepository::reconcileFatalError");    Boolean removeOrDisable = false;    //    //  Get the value of the On Fatal Error Policy property    //    CIMValue errorPolicyValue;    Uint16 onFatalErrorPolicy;    errorPolicyValue = subscription.getProperty        (subscription.findProperty        (_PROPERTY_ONFATALERRORPOLICY)).getValue ();    errorPolicyValue.get (onFatalErrorPolicy);    if (errorPolicyValue == _ERRORPOLICY_DISABLE)    {        //        //  FUTURE: Failure Trigger Time Interval should be allowed to pass        //  before implementing On Fatal Error Policy        //        //  Set the Subscription State to disabled        //        _disableSubscription (subscription);        removeOrDisable = true;    }    else if (errorPolicyValue == _ERRORPOLICY_REMOVE)    {        //        //  FUTURE: Failure Trigger Time Interval should be allowed to pass        //  before implementing On Fatal Error Policy        //        //  Delete the subscription        //        _deleteSubscription (subscription);        removeOrDisable = true;    }    PEG_METHOD_EXIT ();    return removeOrDisable;}CIMClass SubscriptionRepository::getClass (    const CIMNamespaceName & nameSpaceName,    const CIMName & className,    Boolean localOnly,    Boolean includeQualifiers,    Boolean includeClassOrigin,    const CIMPropertyList & propertyList) const{    try    {        return _repository->getClass (nameSpaceName, className, localOnly,            includeQualifiers, includeClassOrigin, propertyList);    }    catch (const Exception & exception)    {        PEG_TRACE_STRING (TRC_DISCARDED_DATA, Tracer::LEVEL2,            "Exception caught trying to get class (" +            className.getString () + "): " +            exception.getMessage ());        throw;    }}CIMInstance SubscriptionRepository::getInstance (    const CIMNamespaceName & nameSpace,    const CIMObjectPath & instanceName,    Boolean localOnly,    Boolean includeQualifiers,    Boolean includeClassOrigin,    const CIMPropertyList & propertyList){    return _repository->getInstance (nameSpace, instanceName, localOnly,        includeQualifiers, includeClassOrigin, propertyList);}void SubscriptionRepository::modifyInstance (    const CIMNamespaceName & nameSpace,    const CIMInstance & modifiedInstance,    Boolean includeQualifiers,    const CIMPropertyList & propertyList){    _repository->modifyInstance (nameSpace, modifiedInstance,        includeQualifiers, propertyList);}void SubscriptionRepository::deleteInstance (    const CIMNamespaceName & nameSpace,    const CIMObjectPath & instanceName){    _repository->deleteInstance (nameSpace, instanceName);}Array <CIMInstance> SubscriptionRepository::enumerateInstancesForClass (    const CIMNamespaceName & nameSpace,    const CIMName & className,    Boolean localOnly,    Boolean includeQualifiers,    Boolean includeClassOrigin,    const CIMPropertyList & propertyList){    return _repository->enumerateInstancesForClass (nameSpace, className,        localOnly, includeQualifiers, includeClassOrigin, propertyList);}Array <CIMObjectPath> SubscriptionRepository::enumerateInstanceNamesForClass (    const CIMNamespaceName & nameSpace,    const CIMName & className){    return _repository->enumerateInstanceNamesForClass(nameSpace, className);}void SubscriptionRepository::_disableSubscription (    CIMInstance subscription){    PEG_METHOD_ENTER (TRC_INDICATION_SERVICE,        "SubscriptionRepository::_disableSubscription");    //    //  Create property list    //    CIMPropertyList propertyList;    Array <CIMName> properties;    properties.append (PEGASUS_PROPERTYNAME_SUBSCRIPTION_STATE);    propertyList = CIMPropertyList (properties);    //    //  Set Time of Last State Change to current date time    //    CIMInstance instance = subscription;    CIMDateTime currentDateTime = CIMDateTime::getCurrentDateTime ();    if (instance.findProperty (_PROPERTY_LASTCHANGE) == PEG_NOT_FOUND)    {        instance.addProperty            (CIMProperty (_PROPERTY_LASTCHANGE, currentDateTime));    }    else    {        CIMProperty lastChange = instance.getProperty            (instance.findProperty (_PROPERTY_LASTCHANGE));        lastChange.setValue (CIMValue (currentDateTime));    }    //    //  Set Subscription State to Disabled    //    CIMProperty state = instance.getProperty (instance.findProperty        (PEGASUS_PROPERTYNAME_SUBSCRIPTION_STATE));    state.setValue (CIMValue (STATE_DISABLED));    //    //  Modify the instance in the repository    //    try    {        _repository->modifyInstance            (subscription.getPath ().getNameSpace (),            subscription, false, propertyList);    }    catch (Exception & exception)    {        PEG_TRACE_STRING (TRC_INDICATION_SERVICE_INTERNAL, Tracer::LEVEL2,           "Exception caught in attempting to disable a subscription: " +            exception.getMessage ());    }    PEG_METHOD_EXIT ();}void SubscriptionRepository::_deleteSubscription (    const CIMInstance subscription){    PEG_METHOD_ENTER (TRC_INDICATION_SERVICE,        "SubscriptionRepository::_deleteSubscription");    //    //  Delete subscription instance from repository    //    try    {        _repository->deleteInstance            (subscription.getPath ().getNameSpace (),            subscription.getPath ());    }    catch (Exception & exception)    {        PEG_TRACE_STRING (TRC_INDICATION_SERVICE_INTERNAL, Tracer::LEVEL2,           "Exception caught in attempting to delete a subscription: " +            exception.getMessage ());    }    PEG_METHOD_EXIT ();}PEGASUS_NAMESPACE_END

⌨️ 快捷键说明

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