diff options
Diffstat (limited to 'graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/TcpServer.h')
-rw-r--r-- | graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/TcpServer.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/TcpServer.h b/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/TcpServer.h new file mode 100644 index 0000000000..e533acf056 --- /dev/null +++ b/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/TcpServer.h @@ -0,0 +1,40 @@ +#pragma once + +#include <boost/asio.hpp> +#include <string> +#include "RemoteEndPoint.h" + +namespace lsp { + class Log; +} +namespace lsp +{ + /// The top-level class of the HTTP server. + class TcpServer + { + public: + TcpServer(const TcpServer&) = delete; + TcpServer& operator=(const TcpServer&) = delete; + ~TcpServer(); + /// Construct the server to listen on the specified TCP address and port, and + /// serve up files from the given directory. + explicit TcpServer(const std::string& address, const std::string& port, + std::shared_ptr < MessageJsonHandler> json_handler, + std::shared_ptr < Endpoint> localEndPoint, lsp::Log& ,uint32_t _max_workers = 2); + + /// Run the server's io_context loop. + void run(); + void stop(); + + RemoteEndPoint point; + private: + struct Data; + /// Perform an asynchronous accept operation. + void do_accept(); + + /// Wait for a request to stop the server. + void do_stop(); + Data* d_ptr = nullptr; + }; +} // namespace + |