LightBird::IMetadata Plugins::getMetadata(const QString &id) const { Mutex mutex(this->mutex, Mutex::READ, "Plugins", "getMetadata"); Plugin *plugin; LightBird::IMetadata metadata; if (!mutex) return (metadata); if (this->plugins.contains(id)) plugin = this->plugins.value(id); else { plugin = new Plugin(id); if (!plugin->load(false)) { LOG_WARNING("Unable to load the plugin in order to get its metadata", Properties("id", id), "Plugins", "getMetadata"); delete plugin; return (metadata); } } metadata = plugin->getMetadata(); if (!this->plugins.contains(id)) delete plugin; return (metadata); }
Plugin* PluginManager::getPlugin(const String& name) { for( size_t i = 0; i < plugins.size(); i++ ) { Plugin* plugin = plugins[i]; const PluginMetadata& metadata = plugin->getMetadata(); if(metadata.name == name) return plugin; } return nullptr; }