#pragma once #include #include #include #include #include "RWMutex.h" class TClient; class TServer final { public: using TClientSet = std::unordered_set>; TServer(int argc, char** argv); std::weak_ptr InsertNewClient(); void RemoveClient(std::weak_ptr); void ForEachClient(const std::function)>& Fn); size_t ClientCount() const; private: TClientSet mClients; mutable RWMutex mClientsMutex; };