Usermanager protected with lock_guards

This commit is contained in:
2025-05-31 13:26:44 +02:00
parent 119285ed71
commit 23d0216a27

View File

@@ -5,6 +5,7 @@
#include <map> #include <map>
#include <vector> #include <vector>
#include <sstream> #include <sstream>
#include <mutex>
#include "locations.h" #include "locations.h"
std::vector<std::string> splitLogFile(const std::string& input, char delimiter); std::vector<std::string> splitLogFile(const std::string& input, char delimiter);
@@ -13,6 +14,7 @@ class userManager
{ {
private: private:
std::map<std::string, bool> users; std::map<std::string, bool> users;
std::mutex mtx;
public: public:
@@ -23,6 +25,7 @@ public:
void addUser(std::string &user) void addUser(std::string &user)
{ {
std::lock_guard<std::mutex> lock(mtx);
if (users.count(user) == 0) if (users.count(user) == 0)
{ {
users[user] = false; users[user] = false;
@@ -31,16 +34,19 @@ public:
void removeUser(std::string &user) void removeUser(std::string &user)
{ {
std::lock_guard<std::mutex> lock(mtx);
users.erase(user); users.erase(user);
} }
bool isContains(std::string &user) bool isContains(std::string &user)
{ {
std::lock_guard<std::mutex> lock(mtx);
return users.count(user) == 1; return users.count(user) == 1;
} }
void setUserFlagged(std::string &user) void setUserFlagged(std::string &user)
{ {
std::lock_guard<std::mutex> lock(mtx);
if (users.count(user) == 1) if (users.count(user) == 1)
{ {
users[user] = true; users[user] = true;
@@ -49,6 +55,7 @@ public:
void setUserUnflagged(std::string &user) void setUserUnflagged(std::string &user)
{ {
std::lock_guard<std::mutex> lock(mtx);
if (users.count(user) == 1) if (users.count(user) == 1)
{ {
users[user] = false; users[user] = false;
@@ -57,6 +64,7 @@ public:
void unflagAllUsers() void unflagAllUsers()
{ {
std::lock_guard<std::mutex> lock(mtx);
for (std::map<std::string, bool>::iterator it = users.begin(); it != users.end(); ++it) for (std::map<std::string, bool>::iterator it = users.begin(); it != users.end(); ++it)
{ {
it->second = false; it->second = false;
@@ -67,6 +75,8 @@ public:
{ {
std::vector<std::string> ret; std::vector<std::string> ret;
std::lock_guard<std::mutex> lock(mtx);
for (std::map<std::string, bool>::iterator it = users.begin(); it != users.end(); ++it) for (std::map<std::string, bool>::iterator it = users.begin(); it != users.end(); ++it)
{ {
ret.push_back(it->first); ret.push_back(it->first);
@@ -79,6 +89,8 @@ public:
{ {
std::vector<std::string> ret; std::vector<std::string> ret;
std::lock_guard<std::mutex> lock(mtx);
for (std::map<std::string, bool>::iterator it = users.begin(); it != users.end(); ++it) for (std::map<std::string, bool>::iterator it = users.begin(); it != users.end(); ++it)
{ {
if (it->second) if (it->second)