/** * @RDE_HEADER@ * PluginSettings * $Id$ * $HeadURL$ * $Author$ * Created by Christian Fröbel, NLSE, 2018-04-25 */ #pragma once #include #include #include #include namespace NGL { class Settings; } namespace AudioVideoManagement { /** * PluginSettings singleton. * At any given time at maximum one instance of this class exists. * Construction and destruction of the singleton instance is done * the usual way: by using the (public) constructors and destructor. * After construction the singleton instance can be accessed * via instance(). * * @author Christian Fröbel */ class AVMSHARED_EXPORT PluginSettings { public: /** Use the config file provided by NGL::findProjectConfigFile(). */ PluginSettings(); explicit PluginSettings(const QString &pathToConfigFile); ~PluginSettings(); /** * May only be called *after* the singleton instance has been created. * @return never nullptr */ static PluginSettings *instance(); bool avaKeepAliveEnabled() const; std::chrono::milliseconds avaTimeout() const; bool vdKeepAliveEnabled() const; std::chrono::milliseconds vdTimeout() const; NGL::Settings *settings() const { return m_settings.get(); } private: std::unique_ptr m_settings; static PluginSettings *s_instance; //!< singleton instance }; } // namespace AudioVideoManagement