#ifndef _USERMAN_H #define _USERMAN_H #include #include #include #include #include #include #include "definitions.h" #include "configfilemanager.h" class userManager { private: std::map users; std::mutex mtx; public: static std::string getScanCommandFromUser(const std::string&, configfilemanager& cfm); void addUserFromLogLine(std::string &line) { addUser(splitString(line, '|').at(USER_LOG_LOCATION)); } void addUser(std::string &user) { std::lock_guard lock(mtx); if (users.count(user) == 0) { users[user] = false; } } void removeUser(std::string &user) { std::lock_guard lock(mtx); users.erase(user); } bool isContains(std::string &user) { std::lock_guard lock(mtx); return users.count(user) == 1; } void setUserFlagged(std::string &user) { std::lock_guard lock(mtx); if (users.count(user) == 1) { users[user] = true; } } void setUserUnflagged(std::string &user) { std::lock_guard lock(mtx); if (users.count(user) == 1) { users[user] = false; } } void unflagAllUsers() { std::lock_guard lock(mtx); for (std::map::iterator it = users.begin(); it != users.end(); ++it) { it->second = false; } } std::set getUsers() { std::set ret; std::lock_guard lock(mtx); for (std::map::iterator it = users.begin(); it != users.end(); ++it) { ret.insert(it->first); } return ret; } std::set getFlaggedUsers() { std::set ret; std::lock_guard lock(mtx); for (std::map::iterator it = users.begin(); it != users.end(); ++it) { if (it->second) { ret.insert(it->first); } } return ret; } bool isAnybodyFlagged() { std::lock_guard lock(mtx); for (std::map::iterator it = users.begin(); it != users.end(); ++it) { if (it->second) return true; } return false; } }; #endif // _USERMAN_H