summaryrefslogtreecommitdiff
path: root/graphics/asymptote/LspCpp/src/jsonrpc/TcpServer.cpp
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-02-28 03:01:23 +0000
committerNorbert Preining <norbert@preining.info>2024-02-28 03:01:23 +0000
commit0afdc3e8c2d8e96d0cd0a5f05f1481a4eecc51d2 (patch)
tree805f2acf8e0115574bc5781d1dfb87fbe2e63ba8 /graphics/asymptote/LspCpp/src/jsonrpc/TcpServer.cpp
parenta64a01e8eaa2c096e7879421f075ebfa2a8bb7f0 (diff)
CTAN sync 202402280301
Diffstat (limited to 'graphics/asymptote/LspCpp/src/jsonrpc/TcpServer.cpp')
-rw-r--r--graphics/asymptote/LspCpp/src/jsonrpc/TcpServer.cpp40
1 files changed, 25 insertions, 15 deletions
diff --git a/graphics/asymptote/LspCpp/src/jsonrpc/TcpServer.cpp b/graphics/asymptote/LspCpp/src/jsonrpc/TcpServer.cpp
index 799d0aec9a..4b3a9aea35 100644
--- a/graphics/asymptote/LspCpp/src/jsonrpc/TcpServer.cpp
+++ b/graphics/asymptote/LspCpp/src/jsonrpc/TcpServer.cpp
@@ -97,18 +97,18 @@ namespace lsp {
{
do_read();
}
- void do_write(const std::string& data)
+ void do_write(const char* data, size_t size)
{
- socket_.async_write_some(boost::asio::buffer(data.data(), data.size()),
- boost::asio::bind_executor(strand_,[this](boost::system::error_code ec, std::size_t n)
- {
- if (!ec)
- {
- return;
- }
- proxy_->error_message = ec.message();
-
- }));
+ socket_.async_write_some(boost::asio::buffer(data, size),
+ boost::asio::bind_executor(strand_,[this](boost::system::error_code ec, std::size_t n)
+ {
+ if (!ec)
+ {
+ return;
+ }
+ proxy_->error_message = ec.message();
+
+ }));
}
void do_read()
{
@@ -140,13 +140,23 @@ namespace lsp {
tcp_stream_wrapper& tcp_stream_wrapper::write(const std::string& c)
{
- session.do_write(c);
- return *this;
+ size_t off = 0;
+ for(;off < c.size();){
+ if(off + 1024 < c.size()){
+ session.do_write(c.data()+off,1024);
+ off += 1024;
+ }else{
+ session.do_write(c.data()+off,c.size() - off);
+ break;
+ }
+ }
+ return *this;
}
tcp_stream_wrapper& tcp_stream_wrapper::write(std::streamsize _s)
{
- session.do_write(std::to_string(_s));
+ auto s = std::to_string(_s);
+ session.do_write(s.data(),s.size());
return *this;
}
@@ -195,7 +205,7 @@ namespace lsp {
TcpServer::TcpServer(const std::string& address, const std::string& port,
std::shared_ptr < MessageJsonHandler> json_handler,
std::shared_ptr < Endpoint> localEndPoint, lsp::Log& log, uint32_t _max_workers)
- : point(json_handler, localEndPoint, log, _max_workers),d_ptr(new Data( log, _max_workers))
+ : point(json_handler, localEndPoint, log,lsp::JSONStreamStyle::Standard, _max_workers),d_ptr(new Data( log, _max_workers))
{