X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/12aae76fbeaa3dc91ab5ecad5531a2c1925340d2..bfb8d7685e998fbcafcb5315b3c50a77760b7e48:/projects/stargazer/main.cpp diff --git a/projects/stargazer/main.cpp b/projects/stargazer/main.cpp index 63d5a6b0..5b4a06fc 100644 --- a/projects/stargazer/main.cpp +++ b/projects/stargazer/main.cpp @@ -24,40 +24,40 @@ $Author: faust $ */ -/*#include -#include -#include -#include */ #include #include #include #include #include -/*#include -#include -#include */ +#include // S_IRUSR +#include // create #include #include +#include +#include // srandom, exit #include #include #include #include +#include "stg/user.h" +#include "stg/common.h" +#include "stg/plugin.h" +#include "stg/logger.h" +#include "stg/scriptexecuter.h" +#include "stg/conffiles.h" +#include "stg/version.h" +#include "stg/pinger.h" +#include "stg_timer.h" #include "settings_impl.h" -#include "user.h" #include "users_impl.h" #include "admins_impl.h" #include "tariffs_impl.h" -#include "common.h" -#include "traffcounter.h" -#include "plugin.h" -#include "stg_logger.h" -#include "stg_timer.h" +#include "services_impl.h" +#include "corps_impl.h" +#include "traffcounter_impl.h" #include "plugin_runner.h" -#include "script_executer.h" -#include "conffiles.h" -#include "version.h" #include "store_loader.h" #include "pidfile.h" #include "eventloop.h" @@ -78,7 +78,6 @@ static bool childExited = false; set executersPid; static pid_t stgChildPid; -#include "pinger.h" //----------------------------------------------------------------------------- bool StartModCmp(const PLUGIN_RUNNER & lhs, const PLUGIN_RUNNER & rhs) @@ -94,8 +93,8 @@ return lhs.GetStopPosition() > rhs.GetStopPosition(); class STG_STOPPER { public: - STG_STOPPER() { nonstop = true; } - bool GetStatus() const { return nonstop; }; + STG_STOPPER() : nonstop(true) {} + bool GetStatus() const { return nonstop; } #ifdef NO_DAEMON void Stop(const char * __file__, int __line__) #else @@ -350,12 +349,12 @@ switch (executerPid) case 0: delete settings; - Executer(msgKey, *msgID, executerPid, procName); + Executer(*msgID, executerPid, procName); return 1; default: if (executersPid.empty()) { - Executer(msgKey, *msgID, executerPid, NULL); + Executer(*msgID, executerPid, NULL); } executersPid.insert(executerPid); } @@ -386,6 +385,7 @@ switch (stgChildPid) break; default: + struct timespec ts = {0, 200000000}; for (int i = 0; i < 120 * 5; i++) { if (access(startFile.c_str(), F_OK) == 0) @@ -399,7 +399,7 @@ switch (stgChildPid) unlink(startFile.c_str()); exit(1); } - usleep(200000); + nanosleep(&ts, NULL); } unlink(startFile.c_str()); exit(1); @@ -447,7 +447,9 @@ STORE * dataStore = NULL; TARIFFS_IMPL * tariffs = NULL; ADMINS_IMPL * admins = NULL; USERS_IMPL * users = NULL; -TRAFFCOUNTER * traffCnt = NULL; +TRAFFCOUNTER_IMPL * traffCnt = NULL; +SERVICES_IMPL * services = NULL; +CORPORATIONS_IMPL * corps = NULL; int msgID = -11; { @@ -544,7 +546,9 @@ WriteServLog("Storage plugin: %s. Loading successfull.", dataStore->GetVersion() tariffs = new TARIFFS_IMPL(dataStore); admins = new ADMINS_IMPL(dataStore); users = new USERS_IMPL(settings, dataStore, tariffs, admins->GetSysAdmin()); -traffCnt = new TRAFFCOUNTER(users, tariffs, settings->GetRulesFileName()); +traffCnt = new TRAFFCOUNTER_IMPL(users, settings->GetRulesFileName()); +services = new SERVICES_IMPL(dataStore); +corps = new CORPORATIONS_IMPL(dataStore); traffCnt->SetMonitorDir(settings->GetMonitorDir()); modSettings = settings->GetModulesSettings(); @@ -562,6 +566,8 @@ for (size_t i = 0; i < modSettings.size(); i++) admins, tariffs, users, + services, + corps, traffCnt, dataStore, settings) @@ -623,11 +629,11 @@ srandom(stgTime); * * (c) man 2 nice */ -errno = 0; +/*errno = 0; if (nice(-19) && errno) { printfd(__FILE__, "nice failed: '%s'\n", strerror(errno)); WriteServLog("nice failed: '%s'", strerror(errno)); -} +}*/ WriteServLog("Stg started successfully."); WriteServLog("+++++++++++++++++++++++++++++++++++++++++++++"); @@ -728,6 +734,8 @@ KillExecuters(); StopStgTimer(); WriteServLog("StgTimer: Stop successfull."); +delete corps; +delete services; delete traffCnt; delete users; delete admins;