/* * Read the directory and load all .so files */ vector<AbstractPlugin*> DlOpenPluginLoader::LoadPlugins() { AbstractPlugin *plugin = NULL; set<string>::iterator iter; set<string> plugin_names = FindPlugins(m_dirname); vector<AbstractPlugin*> plugins; if (!m_dl_active) { if (lt_dlinit()) { OLA_WARN << "lt_dlinit failed"; return plugins; } } if (lt_dlsetsearchpath(m_dirname.c_str())) { OLA_WARN << "lt_setpath failed"; lt_dlexit(); return plugins; } m_dl_active = true; for (iter = plugin_names.begin(); iter != plugin_names.end(); ++iter) { string path = m_dirname; path.append("/"); path.append(*iter); if ((plugin = this->LoadPlugin(path))) plugins.push_back(plugin); else OLA_WARN << "Failed to load plugin: " << path; } return plugins; }
long Cx_PluginLoader::LoadPlugins(const wchar_t* path, const wchar_t* ext, bool recursive, bool enableDelayLoading) { wchar_t fullpath[MAX_PATH]; std::vector<std::wstring> filenames; MakeFullPath(fullpath, NULL, path); FindPlugins(filenames, fullpath, ext, recursive); return InLoadPlugins(filenames, enableDelayLoading); }
void cPluginManager::ReloadPluginsNow(cIniFile & a_SettingsIni) { LOG("-- Loading Plugins --"); m_bReloadPlugins = false; UnloadPluginsNow(); FindPlugins(); cServer::BindBuiltInConsoleCommands(); // Check if the Plugins section exists. int KeyNum = a_SettingsIni.FindKey("Plugins"); // If it does, how many plugins are there? int NumPlugins = ((KeyNum != -1) ? (a_SettingsIni.GetNumValues(KeyNum)) : 0); if (KeyNum == -1) { InsertDefaultPlugins(a_SettingsIni); } else if (NumPlugins > 0) { for (int i = 0; i < NumPlugins; i++) { AString ValueName = a_SettingsIni.GetValueName(KeyNum, i); if (ValueName.compare("Plugin") == 0) { AString PluginFile = a_SettingsIni.GetValue(KeyNum, i); if (!PluginFile.empty()) { if (m_Plugins.find(PluginFile) != m_Plugins.end()) { LoadPlugin(PluginFile); } } } } } size_t NumLoadedPlugins = GetNumPlugins(); if (NumLoadedPlugins == 0) { LOG("-- No Plugins Loaded --"); } else if (NumLoadedPlugins > 1) { LOG("-- Loaded %i Plugins --", (int)NumLoadedPlugins); } else { LOG("-- Loaded 1 Plugin --"); } CallHookPluginsLoaded(); }
void cPluginManager::ReloadPluginsNow(cIniFile & a_SettingsIni) { LOG("-- Loading Plugins --"); m_bReloadPlugins = false; UnloadPluginsNow(); FindPlugins(); cServer::BindBuiltInConsoleCommands(); unsigned int KeyNum = a_SettingsIni.FindKey("Plugins"); unsigned int NumPlugins = ((KeyNum != -1) ? (a_SettingsIni.GetNumValues(KeyNum)) : 0); if (KeyNum == -1) { InsertDefaultPlugins(a_SettingsIni); } else if (NumPlugins > 0) { for(unsigned int i = 0; i < NumPlugins; i++) { AString ValueName = a_SettingsIni.GetValueName(KeyNum, i); if (ValueName.compare("Plugin") == 0) { AString PluginFile = a_SettingsIni.GetValue(KeyNum, i); if (!PluginFile.empty()) { if (m_Plugins.find(PluginFile) != m_Plugins.end()) { LoadPlugin( PluginFile ); } } } } } if (GetNumPlugins() == 0) { LOG("-- No Plugins Loaded --"); } else if (GetNumPlugins() > 1) { LOG("-- Loaded %i Plugins --", GetNumPlugins()); } else { LOG("-- Loaded 1 Plugin --"); } }