NumOfLogs()

This commit is contained in:
EntireTwix 2021-07-07 16:12:59 -07:00
parent b0fdfc5f4f
commit bb6b2f6c44

116
main.cpp
View file

@ -36,74 +36,76 @@ void SaveSig(int s)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
if (argc != 3)
{ {
std::cerr << "Usage: sudo ./bank <admin account> <saving frequency in minutes>\n";
return 0; if (argc != 3)
} {
if (geteuid() != 0) std::cerr << "Usage: sudo ./bank <admin account> <saving frequency in minutes>\n";
{ return 0;
std::cerr << "ERROR: CCash MUST be ran as root\n"; }
return 0; if (geteuid() != 0)
} {
std::cout std::cerr << "ERROR: CCash MUST be ran as root\n";
<< "\nAPI Version : " << API_VERSION return 0;
<< "\n\nAVX : " << (__builtin_cpu_supports("avx") ? "enabled" : "disabled") }
<< "\nAVX 2 : " << (__builtin_cpu_supports("avx2") ? "enabled" : "disabled") std::cout
<< "\nSSE 2 : " << (__builtin_cpu_supports("sse2") ? "enabled" : "disabled") << "\nAPI Version : " << API_VERSION
<< "\nSSE 3 : " << (__builtin_cpu_supports("sse3") ? "enabled" : "disabled") << "\n\nAVX : " << (__builtin_cpu_supports("avx") ? "enabled" : "disabled")
<< "\nSSE 4.1 : " << (__builtin_cpu_supports("sse4.1") ? "enabled" : "disabled") << "\nAVX 2 : " << (__builtin_cpu_supports("avx2") ? "enabled" : "disabled")
<< "\nSSE 4.2 : " << (__builtin_cpu_supports("sse4.2") ? "enabled" : "disabled") << "\nSSE 2 : " << (__builtin_cpu_supports("sse2") ? "enabled" : "disabled")
<< "\nSSE 3 : " << (__builtin_cpu_supports("sse3") ? "enabled" : "disabled")
<< "\nSSE 4.1 : " << (__builtin_cpu_supports("sse4.1") ? "enabled" : "disabled")
<< "\nSSE 4.2 : " << (__builtin_cpu_supports("sse4.2") ? "enabled" : "disabled")
#if MULTI_THREADED #if MULTI_THREADED
<< "\n\nThreads : " << get_nprocs() + 1 << "\n\nThreads : " << get_nprocs() + 1
<< "\nMulti threading : enabled"; << "\nMulti threading : enabled";
#else #else
<< "\n\nThreads : " << 2 << "\n\nThreads : " << 2
<< "\nMulti threading : disabled"; << "\nMulti threading : disabled";
#endif #endif
//Loading users from users.json //Loading users from users.json
bank.Load(); bank.Load();
std::cout << "\n\nLoaded " << bank.NumOfUsers() << " Users"
<< "\nLoaded " << bank.NumOfLogs() << " Logs"
<< "\nLoaded " << bank.SumBal() << " CSH"
<< std::endl; //flushing before EventLoop
std::cout << "\n\nLoaded " << bank.NumOfUsers() << " Users" //Sig handling
<< "\nLoaded " << bank.NumOfLogs() << " Logs" struct sigaction sigIntHandler;
<< std::endl; //flushing before EventLoop
//Sig handling sigIntHandler.sa_handler = SaveSig;
struct sigaction sigIntHandler; sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigIntHandler.sa_handler = SaveSig; sigaction(SIGINT, &sigIntHandler, NULL);
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL); //Admin account
bank.admin_account = argv[1];
//Admin account //Auto Saving
bank.admin_account = argv[1]; const unsigned long saving_freq = std::stoul(std::string(argv[2]));
if (saving_freq) //if saving frequency is 0 then auto saving is turned off
//Auto Saving {
const unsigned long saving_freq = std::stoul(std::string(argv[2])); std::thread([saving_freq]() {
if (saving_freq) //if saving frequency is 0 then auto saving is turned off while (1)
{
std::thread([saving_freq]() {
while (1)
{
std::this_thread::sleep_for(std::chrono::minutes(saving_freq));
std::cout << "Saving " << std::time(0) << "...\n";
if (bank.GetChangeState())
{ {
std::cout << " to disk...\n"; std::this_thread::sleep_for(std::chrono::minutes(saving_freq));
bank.Save(); std::cout << "Saving " << std::time(0) << "...\n";
if (bank.GetChangeState())
{
std::cout << " to disk...\n";
bank.Save();
}
else
{
std::cout << " no changes...\n";
}
} }
else })
{ .detach();
std::cout << " no changes...\n"; }
}
}
})
.detach();
} }
auto API = std::make_shared<api>(bank); auto API = std::make_shared<api>(bank);
auto user_filter_default = std::make_shared<UserFilter<true, false>>(bank); auto user_filter_default = std::make_shared<UserFilter<true, false>>(bank);
auto user_filter_sparse = std::make_shared<UserFilter<false, false>>(bank); auto user_filter_sparse = std::make_shared<UserFilter<false, false>>(bank);
@ -111,10 +113,6 @@ int main(int argc, char **argv)
auto json_resp_and_req_filter = std::make_shared<JsonFilter<true>>(); auto json_resp_and_req_filter = std::make_shared<JsonFilter<true>>();
auto json_resp_filter = std::make_shared<JsonFilter<false>>(); auto json_resp_filter = std::make_shared<JsonFilter<false>>();
app().registerPostHandlingAdvice(
[](const drogon::HttpRequestPtr &req, const drogon::HttpResponsePtr &resp) {
resp->addHeader("Access-Control-Allow-Origin", "*"); //CORS
});
app() app()
.loadConfigFile(config_location) .loadConfigFile(config_location)
.registerFilter(user_filter_default) .registerFilter(user_filter_default)