void CapacityCache::clear(void) {
m_keyUsage.clear();
m_keyValue.clear();
+ m_pluginManager.invalidateAll();
+ for (auto &plugin : m_plugins) {
+ plugin.second->invalidate();
+ }
}
std::string CapacityCache::keyToString(const PolicyKey &key) {
const std::vector<PolicyType> &getSupportedPolicyTypes(void) {
return s_supportedTypes;
}
+
+ void invalidate(void) {}
private:
static const std::vector<PolicyType> s_supportedTypes;
};
* Policy type supported by plugin.
*/
virtual const std::vector<PolicyType> &getSupportedPolicyTypes(void) = 0;
+
+ /**
+ * Informs, that every data stored based on previously given input
+ * should be invalidated.
+ */
+ virtual void invalidate(void) = 0;
+
virtual ~ExternalPluginInterface() {}
};
return m_plugins[pType];
}
+void PluginManager::invalidateAll(void) {
+ for (auto &plugin : m_plugins) {
+ plugin.second->invalidate();
+ }
+}
+
void PluginManager::loadPlugins(void) {
struct dirent **nameList = NULL;
int fileAmount = scandir(m_dir.c_str(), &nameList, pluginFilter, alphasort);
public:
PluginManager(const std::string &pluginDir);
ExternalPluginPtr getPlugin(PolicyType pType);
+ void invalidateAll(void);
~PluginManager();
private:
void Logic::onPoliciesChanged(void) {
m_storage->save();
m_socketManager->disconnectAllClients();
+ m_pluginManager->invalidateAll();
//todo remove all saved contexts (if there will be any saved contexts)
}