diff options
Diffstat (limited to 'graphics/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp')
-rw-r--r-- | graphics/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/graphics/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp b/graphics/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp index b501d35a18..f4bd83aae9 100644 --- a/graphics/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp +++ b/graphics/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp @@ -11,7 +11,6 @@ #include "LibLsp/JsonRpc/Context.h" #include "rapidjson/error/en.h" #include "LibLsp/JsonRpc/json.h" -#include "LibLsp/JsonRpc/GCThreadContext.h" #include "LibLsp/JsonRpc/ScopeExit.h" #include "LibLsp/JsonRpc/stream.h" #include <atomic> @@ -19,6 +18,8 @@ #include <boost/asio/thread_pool.hpp> #include <boost/asio/post.hpp> +#include "LibLsp/JsonRpc/GCThreadContext.h" + namespace lsp { // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. @@ -144,14 +145,18 @@ PendingRequestInfo::PendingRequestInfo(const std::string& md) : method(md) } struct RemoteEndPoint::Data { - explicit Data(uint8_t workers,lsp::Log& _log , RemoteEndPoint* owner) - : max_workers(workers), m_id(0),next_request_cookie(0), message_producer(new StreamMessageProducer(*owner)), log(_log) + explicit Data(lsp::JSONStreamStyle style,uint8_t workers,lsp::Log& _log , RemoteEndPoint* owner) + : max_workers(workers), m_id(0),next_request_cookie(0), log(_log) { - + if(style == lsp::JSONStreamStyle::Standard ) + message_producer = (new LSPStreamMessageProducer(*owner)) ; + else{ + message_producer = (new DelimitedStreamMessageProducer(*owner)) ; + } } ~Data() { - delete message_producer; + delete message_producer; } uint8_t max_workers; std::atomic<int> m_id; @@ -333,8 +338,9 @@ CancelMonitor RemoteEndPoint::getCancelMonitor(const lsRequestId& id) } RemoteEndPoint::RemoteEndPoint( - const std::shared_ptr < MessageJsonHandler >& json_handler,const std::shared_ptr < Endpoint>& localEndPoint, lsp::Log& _log, uint8_t max_workers): - d_ptr(new Data(max_workers,_log,this)),jsonHandler(json_handler), local_endpoint(localEndPoint) + const std::shared_ptr < MessageJsonHandler >& json_handler,const std::shared_ptr < Endpoint>& localEndPoint, + lsp::Log& _log, lsp::JSONStreamStyle style, uint8_t max_workers): + d_ptr(new Data(style,max_workers,_log,this)),jsonHandler(json_handler), local_endpoint(localEndPoint) { jsonHandler->method2notification[Notify_Cancellation::notify::kMethodInfo] = [](Reader& visitor) { @@ -342,7 +348,6 @@ RemoteEndPoint::RemoteEndPoint( }; d_ptr->quit.store(false, std::memory_order_relaxed); - } RemoteEndPoint::~RemoteEndPoint() @@ -608,7 +613,7 @@ void RemoteEndPoint::startProcessingMessages(std::shared_ptr<lsp::istream> r, const auto temp = std::make_shared<std::string>(std::move(content)); boost::asio::post(*d_ptr->tp, [this, temp]{ -#ifdef USEGC +#ifdef LSPCPP_USEGC GCThreadContext gcContext; #endif |