#pragma once #include #include #include #include #include #include class TInetStreamSocket; // Simple server listens on the specified port and launches // requestHandler in the separate thread for each incoming connection. class TSimpleServer { public: using TRequestHandler = std::function; public: TSimpleServer( int port, TRequestHandler requestHandler, bool dontStartServer = false, TDuration acceptDelay = TDuration::Zero()); ~TSimpleServer(); void Stop(); int GetPort() const; TString GetAddress() const; private: const int Port_; std::unique_ptr ThreadPool_; THolder ListenerThread_; std::unique_ptr SendFinishSocket_; };