/
Shymer123
/
Messenger
Обзор
Документация
Войти
/
Shymer123
/
Messenger
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Server/SourceFiles/MainServer/Server.h
48 строк
1 KB
Shymer123
changed sending files to the client
25 мар 2025, 17:09
25 мар 2025, 17:09
b6b912b
Код
Авторство
О чём код?
#ifndef SERVER_H #define SERVER_H #include <condition_variable> #include <queue> #include <set> #include <sys/select.h> #include <atomic> #include <unordered_map> class Server { public: Server(int port); ~Server(); void start(); void stop(); void safeSend(int clientSocket, const char& type, const std::vector<char>& response); private: int serverSocket; int port; fd_set masterSet; fd_set readSet; int maxFd; std::set<int> clients; std::atomic<bool> running; std::queue<std::pair<int, std::vector<char>>> requestQueue; std::vector<std::thread> workerThreads; std::mutex queueMutex; std::condition_variable queueCondition; std::unordered_map<int, std::unique_ptr<std::mutex>> socketMutexes; std::mutex socketMapMutex; std::mutex clientsMutex; std::mutex serverMutex; void setupSocket(); void handleNewConnection(); void handleClientMessages(); void processQueue(); void enqueueRequest(int clientSocket, const std::vector<char> request); }; #endif // SERVER_H