X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/7adae1923ee7cde74ee96f762c994ecafa0e1ca4..64b687f8ec36a103865044613cb0f42f98aeda3a:/projects/sgauthstress/main.cpp diff --git a/projects/sgauthstress/main.cpp b/projects/sgauthstress/main.cpp index 3d0adb49..b0819c3c 100644 --- a/projects/sgauthstress/main.cpp +++ b/projects/sgauthstress/main.cpp @@ -28,6 +28,8 @@ #include #include +#include +#include #include "stg/common.h" #include "stg/store.h" @@ -35,6 +37,7 @@ #include "settings.h" #include "store_loader.h" +#include "proto.h" #include "user.h" time_t stgTime; @@ -94,6 +97,11 @@ if (settings.ReadSettings()) SetSignalHandlers(); +PROTO proto(settings.GetServerName(), + settings.GetServerPort(), + settings.GetLocalPort(), + 10); + STORE_LOADER storeLoader(settings.GetModulesPath(), settings.GetStoreModuleSettings()); if (storeLoader.Load()) { @@ -110,35 +118,51 @@ if (dataStore->GetUsersList(&userList)) return -1; } -std::vector users; -std::vector::const_iterator it; -for (it = userList.begin(); it != userList.end(); ++it) +std::list ips; { - USER_CONF userConf; - if (dataStore->RestoreUserConf(&userConf, *it)) + std::vector::const_iterator it; + for (it = userList.begin(); it != userList.end(); ++it) { - std::cerr << "Failed to read user conf: '" << dataStore->GetStrError() << "'" << std::endl; - return -1; + USER_CONF userConf; + if (dataStore->RestoreUserConf(&userConf, *it)) + { + std::cerr << "Failed to read user conf: '" << dataStore->GetStrError() << "'" << std::endl; + return -1; + } + proto.AddUser( + USER( + *it, + userConf.password, + userConf.ips[0].ip + ) + ); + ips.push_back(userConf.ips[0].ip); } - users.push_back( - USER( - settings.GetServerName(), - settings.GetServerPort(), - settings.GetLocalPort(), - *it, - userConf.password - ) - ); } -std::cout << "Successfully loaded " << users.size() << " users" << std::endl; +if (!proto.Start()) + { + std::cerr << "Failed to start listening thread: '" << proto.GetStrError() << "'" << std::endl; + return -1; + } + +std::list::const_iterator it; +for (it = ips.begin(); it != ips.end(); ++it) + { + proto.Connect(*it); + } + +std::cout << "Successfully loaded " << proto.UserCount() << " users" << std::endl; running = true; while (running) { - usleep(200000); + struct timespec ts = {0, 200000000}; + nanosleep(&ts, NULL); } +proto.Stop(); + storeLoader.Unload(); return 0;