📄 subscriptionrepository.cpp
字号:
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 + -