XzeroDaemon::~XzeroDaemon() { delete eventHandler_; eventHandler_ = nullptr; unregisterPlugin(core_); delete core_; core_ = nullptr; while (!plugins_.empty()) unloadPlugin(plugins_[plugins_.size() - 1]->name()); delete runner_; runner_ = nullptr; delete unit_; unit_ = nullptr; delete server_; server_ = nullptr; instance_ = nullptr; x0::FlowRunner::shutdown(); #if defined(HAVE_SYSLOG_H) x0::SyslogSink::close(); #endif }
XzeroDaemon::~XzeroDaemon() { TRACE(2, "deleting eventHandler"); delete eventHandler_; eventHandler_ = nullptr; while (!plugins_.empty()) unloadPlugin(plugins_[plugins_.size() - 1]->name()); TRACE(2, "deleting plugin core"); if (core_) { unregisterPlugin(core_); delete core_; core_ = nullptr; } main_ = nullptr; TRACE(2, "deleting server"); delete server_; server_ = nullptr; instance_ = nullptr; #if defined(HAVE_SYSLOG_H) x0::SyslogSink::close(); #endif }
void PluginManager::shutDown() { if (m_shuttingDown) return; m_shuttingDown = true; // Unregister all plugins. Registry::iterator it; while ((it = m_registry.begin()) != m_registry.end()) unregisterPlugin(it->second->id.c_str()); if (static_cast<int>(m_table.size()) == m_nCachedPlugins) delete this; }
/** safely unloads a plugin. */ void XzeroDaemon::unloadPlugin(const std::string& name) { log(Severity::debug, "Unloading plugin: %s", name.c_str()); for (auto plugin: plugins_) { if (plugin->name() == name) { unregisterPlugin(plugin); auto m = pluginLibraries_.find(plugin); if (m != pluginLibraries_.end()) { delete plugin; m->second.close(); pluginLibraries_.erase(m); } return; } } }
foreach(VideoInformationPlugin *plugin, getAllAdultPlugins()) { if (removeFromDisk) QFile::remove(plugin->getScriptFile(false)); // unregister this plugin unregisterPlugin(plugin); }
bool ossimSharedPluginRegistry::unregisterPlugin(int idx) { ossimPluginLibrary* lib = getPlugin(idx); return unregisterPlugin(lib); }