void WIPolicyCreateAll::execute(void) { writeWorkItemStartingInfoMessage(); try { EsifFileEnumerator fileEnumerator(m_policyDirectoryPath, "DptfPolicy*" ESIF_LIB_EXT); std::string policyFileName = fileEnumerator.getFirstFile(); while (policyFileName.length() > 0) { try { std::string policyFilePath = m_policyDirectoryPath + policyFileName; if (getDptfManager()->isDptfPolicyLoadNameOnly()) { policyFilePath.erase(0, m_policyDirectoryPath.length()); } getDptfManager()->getPolicyManager()->createPolicy(policyFilePath); } catch (std::exception& ex) { writeWorkItemWarningMessage(ex, "PolicyManager::createPolicy", "Policy File Name", policyFileName); } catch (...) { dptf_exception ex("Unknown exception type caught when attempting to create a policy."); writeWorkItemWarningMessage(ex, "PolicyManager::createPolicy", "Policy File Name", policyFileName); } policyFileName = fileEnumerator.getNextFile(); } } catch (std::exception& ex) { writeWorkItemErrorMessage(ex, "PolicyManager::createAllPolicies"); } catch (...) { dptf_exception ex("Unknown exception type caught when attempting to create all policies."); writeWorkItemErrorMessage(ex, "PolicyManager::createAllPolicies"); } }
void WIPolicyReload::execute(void) { writeWorkItemStartingInfoMessage(); // Iterate through the list of policies and unbind all participant and domains from them DptfManagerInterface* dptfManager = getDptfManager(); auto policyManager = getPolicyManager(); auto participantIndexList = getParticipantManager()->getParticipantIndexes(); // Unbind every participant and domain from every policy for (auto participantIndex = participantIndexList.begin(); participantIndex != participantIndexList.end(); ++participantIndex) { dptfManager->unbindDomainsFromPolicies(*participantIndex); dptfManager->unbindParticipantFromPolicies(*participantIndex); } // No try-catch here because destroyAllPolicies' calling tree catches all exceptions. policyManager->destroyAllPolicies(); try { policyManager->reloadAllPolicies(dptfManager->getDptfPolicyDirectoryPath()); } catch (dptf_exception ex) { writeWorkItemErrorMessage(ex, "policyManager::reloadAllPolicies"); } // Bind every participant and domain to every policy for (auto participantIndex = participantIndexList.begin(); participantIndex != participantIndexList.end(); ++participantIndex) { dptfManager->bindParticipantToPolicies(*participantIndex); dptfManager->bindDomainsToPolicies(*participantIndex); } }