#include #include #include #include "plugin.h" #include "store.h" #include "configproto.h" using namespace std; extern "C" PLUGIN * GetPlugin(); class STG_CONFIG; //----------------------------------------------------------------------------- class STG_CONFIG_SETTINGS { public: STG_CONFIG_SETTINGS(); virtual ~STG_CONFIG_SETTINGS() {} const string & GetStrError() const; int ParseSettings(const MODULE_SETTINGS & s); uint16_t GetPort(); private: int ParseIntInRange(const string & str, int min, int max, int * val); string errorStr; int port; }; //----------------------------------------------------------------------------- class STG_CONFIG: public PLUGIN { public: STG_CONFIG(); virtual ~STG_CONFIG() {} void SetUsers(USERS * u) { users = u; } void SetTariffs(TARIFFS * t) { tariffs = t; } void SetAdmins(ADMINS * a) { admins = a; } void SetStore(STORE * s) { store = s; } void SetTraffcounter(TRAFFCOUNTER *) {} void SetStgSettings(const SETTINGS * s) { stgConfigSettings = s; } void SetSettings(const MODULE_SETTINGS & s) { settings = s; } int ParseSettings(); int Start(); int Stop(); int Reload() { return 0; } bool IsRunning() { return running; } const string & GetStrError() const { return errorStr; } string GetVersion() const; uint16_t GetStartPosition() const; uint16_t GetStopPosition() const; private: static void * Run(void *); void RealRun(); bool PrepareNetwork(); bool FinalizeNetwork(); void AcceptConnection(); mutable string errorStr; STG_CONFIG_SETTINGS stgConfigSettings; pthread_t thread; bool running; bool stopped; CONFIGPROTO config; USERS * users; ADMINS * admins; TARIFFS * tariffs; STORE * store; MODULE_SETTINGS settings; const SETTINGS * stgSettings; std::list connections; int sd; }; //-----------------------------------------------------------------------------