#ifndef THREADDATA_H #define THREADDATA_H #include #include #include #include #include #include #include #include #include "forward_declarations.h" #include "client.h" #include "subscriptionstore.h" #include "utils.h" class ThreadData { std::unordered_map clients_by_fd; std::mutex clients_by_fd_mutex; std::shared_ptr subscriptionStore; std::unordered_set readyForDequeueing; std::mutex readForDequeuingMutex; public: bool running = true; std::thread thread; int threadnr = 0; int epollfd = 0; int event_fd = 0; ThreadData(int threadnr, std::shared_ptr &subscriptionStore); void quit(); void giveClient(Client_p client); Client_p getClient(int fd); void removeClient(Client_p client); std::shared_ptr &getSubscriptionStore(); void wakeUpThread(); void addToReadyForDequeuing(Client_p &client); std::unordered_set &getReadyForDequeueing() { return readyForDequeueing; } void clearReadyForDequeueing(); }; #endif // THREADDATA_H