void sentry::Sentry::loadPlugins(){ string plugindir(_config->getValue("application", "plugindir")); if(plugindir.empty()){ Logger::log("Plugin directory not in config.", Logger::LOG_FATAL); exit(Sentry::EXIT_NO_PLUGIN_DIR); }else{ plugindir += "/"; } vector<string> files = _getPluginLibNames(plugindir); /** * Load the plug-ins */ for(unsigned int i = 0; i < files.size(); i++){ try{ string pluginfile = files.at(i); IPlugin* plugin = PluginLoader::loadPlugin(pluginfile, this); if(plugin != 0){ _plugins[plugin->getName()] = plugin; _pluginpathmap[plugin->getName()] = pluginfile; vector<IHookPoint*> hookpoints = plugin->getProvidingHookPoints(); for(int h = 0; h < hookpoints.size(); h++){ IHookPoint* hookpoint = hookpoints.at(h); if( findHookPoint(hookpoint->getName()) == 0 ){ _hookpoints[hookpoint->getName()] = hookpoint; }else{ Logger::log("Ignoring already available hookpoint " + hookpoint->getName(), Logger::LOG_WARNING); } } } } catch(NoSuchLibraryException& nsle){ Logger::log(nsle.what(), Logger::LOG_ERROR); } catch(NoSuchSymbolException& nsse){ Logger::log(nsse.what(), Logger::LOG_ERROR); } } this->_activatePlugins(); }