X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/97a198bf64f74f1bacd064026e67d7cb40daffa2..8e80bb9cec2c90dd61f810fb1525932a434288eb:/projects/rscriptd/listener.cpp diff --git a/projects/rscriptd/listener.cpp b/projects/rscriptd/listener.cpp index 2761d7f7..3d8fd48e 100644 --- a/projects/rscriptd/listener.cpp +++ b/projects/rscriptd/listener.cpp @@ -36,6 +36,7 @@ #include "stg/scriptexecuter.h" #include "stg/locker.h" #include "stg/common.h" +#include "stg/const.h" #include "listener.h" void InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password); @@ -43,16 +44,15 @@ void Decrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, int len8); //----------------------------------------------------------------------------- LISTENER::LISTENER() - : WriteServLog(GetStgLogger()), + : WriteServLog(STG::Logger::get()), port(0), running(false), receiverStopped(true), processorStopped(true), userTimeout(0), - listenSocket(0) + listenSocket(0), + version("rscriptd listener v.1.2") { -version = "rscriptd listener v.1.2"; - pthread_mutex_init(&mutex, NULL); } //----------------------------------------------------------------------------- @@ -312,7 +312,7 @@ else if (packetHead.packetType == RS_DISCONNECT_PACKET) } } -STG_LOCKER lock(&mutex, __FILE__, __LINE__); +STG_LOCKER lock(&mutex); pending.push_back(data); return false; @@ -356,40 +356,64 @@ while (it != pending.end() && count < 256) ); if (it->type == PendingData::CONNECT) { + printfd(__FILE__, "Connect packet\n"); if (uit == users.end() || uit->login != it->login) { + printfd(__FILE__, "Connect new user '%s'\n", it->login.c_str()); // Add new user Connect(*it); users.insert(uit, AliveData(static_cast(*it))); } else if (uit->login == it->login) { + printfd(__FILE__, "Update existing user '%s'\n", it->login.c_str()); // Update already existing user time(&uit->lastAlive); uit->params = it->params; } + else + { + printfd(__FILE__, "Hmmm... Strange connect for '%s'\n", it->login.c_str()); + } } else if (it->type == PendingData::ALIVE) { + printfd(__FILE__, "Alive packet\n"); if (uit != users.end() && uit->login == it->login) { + printfd(__FILE__, "Alive user '%s'\n", it->login.c_str()); // Update existing user time(&uit->lastAlive); } + else + { + printfd(__FILE__, "Alive user '%s' is not found\n", it->login.c_str()); + } } else if (it->type == PendingData::DISCONNECT) { + printfd(__FILE__, "Disconnect packet\n"); if (uit != users.end() && uit->login == it->login.c_str()) { + printfd(__FILE__, "Disconnect user '%s'\n", it->login.c_str()); // Disconnect existing user + uit->params = it->params; Disconnect(*uit); users.erase(uit); } + else + { + printfd(__FILE__, "Cannot find user '%s' for disconnect\n", it->login.c_str()); + } + } + else + { + printfd(__FILE__, "Unknown packet type\n"); } ++it; ++count; } -STG_LOCKER lock(&mutex, __FILE__, __LINE__); +STG_LOCKER lock(&mutex); pending.erase(pending.begin(), it); } //-----------------------------------------------------------------------------