X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/7b66bdcccfa4aad5a8e4110bf4769bc13c15dcfd..4ec483cf24cf5474cdcacf355132070a3661c186:/projects/stargazer/plugin_runner.h diff --git a/projects/stargazer/plugin_runner.h b/projects/stargazer/plugin_runner.h index 8e2272bf..1c8bf422 100644 --- a/projects/stargazer/plugin_runner.h +++ b/projects/stargazer/plugin_runner.h @@ -16,86 +16,81 @@ /* * Author : Boris Mikhailenko + * Author : Maxim Mamontov */ -/* - $Revision: 1.13 $ - $Date: 2010/03/04 12:22:41 $ - $Author: faust $ - */ - -#ifndef PLUGIN_RUNNER_H -#define PLUGIN_RUNNER_H +#pragma once -#include - -#include "stg/module_settings.h" #include "stg/plugin.h" -#include "stg/os_int.h" -class SETTINGS_IMPL; -class ADMINS_IMPL; -class TARIFFS_IMPL; -class USERS_IMPL; -class SERVICES_IMPL; -class CORPORATIONS_IMPL; -class TRAFFCOUNTER; -class STORE; +#include +#include +#include + +namespace STG +{ + +struct ModuleSettings; +struct Settings; +struct Admins; +struct Tariffs; +struct Users; +struct Services; +struct Corporations; +struct TraffCounter; +struct Store; //----------------------------------------------------------------------------- -class PLUGIN_RUNNER { +class PluginRunner { public: - PLUGIN_RUNNER(const std::string & pluginFileName, - const MODULE_SETTINGS & ms, - ADMINS_IMPL * admins, - TARIFFS_IMPL * tariffs, - USERS_IMPL * users, - SERVICES_IMPL * services, - CORPORATIONS_IMPL * corporations, - TRAFFCOUNTER * tc, - STORE * store, - const SETTINGS_IMPL * s); - PLUGIN_RUNNER(const PLUGIN_RUNNER & rvalue); - ~PLUGIN_RUNNER(); - - PLUGIN_RUNNER & operator=(const PLUGIN_RUNNER & rvalue); + struct Error : public std::runtime_error { + explicit Error(const std::string & msg) : runtime_error(msg) {} + }; + + PluginRunner(const std::string& pluginFileName, + const std::string& pluginName, + const ModuleSettings& ms, + Admins& admins, + Tariffs& tariffs, + Users& users, + Services& services, + Corporations& corporations, + TraffCounter& traffcounter, + Store& store, + const Settings & settings); + ~PluginRunner(); int Start(); int Stop(); - int Reload(); + int Reload(const ModuleSettings& ms); int Restart(); - bool IsRunning(); - - const std::string & GetStrError() const { return errorStr; } - PLUGIN * GetPlugin(); - const std::string & GetFileName() const { return pluginFileName; } + bool IsRunning() { return m_plugin.IsRunning(); } - int Load(); - int Unload(); + const std::string& GetStrError() const { return errorStr; } + Plugin& GetPlugin() { return m_plugin; } + const std::string& GetFileName() const { return pluginFileName; } + const std::string& GetName() const { return pluginName; } - uint16_t GetStartPosition() const { return plugin->GetStartPosition(); } - uint16_t GetStopPosition() const { return plugin->GetStopPosition(); } + uint16_t GetStartPosition() const { return m_plugin.GetStartPosition(); } + uint16_t GetStopPosition() const { return m_plugin.GetStopPosition(); } private: - std::string pluginFileName; - std::string pluginSettingFileName; - - PLUGIN * plugin; - bool isPluginLoaded; - std::string errorStr; - - void * libHandle; - bool isRunning; - - ADMINS_IMPL * admins; - TARIFFS_IMPL * tariffs; - USERS_IMPL * users; - SERVICES_IMPL * services; - CORPORATIONS_IMPL * corps; - STORE * store; - TRAFFCOUNTER * traffCnt; - const SETTINGS_IMPL * stgSettings; - MODULE_SETTINGS modSettings; + Plugin & load(const ModuleSettings& ms, + Admins& admins, + Tariffs& tariffs, + Users& users, + Services& services, + Corporations& corporations, + TraffCounter& traffcounter, + Store& store, + const Settings& settings); + + std::string pluginFileName; + std::string pluginName; + void* libHandle; + + Plugin& m_plugin; + std::string errorStr; }; //----------------------------------------------------------------------------- -#endif //PLUGIN_RUNNER_H +}