From 606d776ebb05cde39ee91811834da5e9c64a8303 Mon Sep 17 00:00:00 2001 From: Klemens Date: Tue, 4 Oct 2022 12:30:57 +0800 Subject: [PATCH] async_read works with dynamic_buffer v2. --- test/beast/http/read.cpp | 19 +++++++++++++++++++ test/beast/websocket/read1.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/test/beast/http/read.cpp b/test/beast/http/read.cpp index 87877816..719eea6f 100644 --- a/test/beast/http/read.cpp +++ b/test/beast/http/read.cpp @@ -692,6 +692,25 @@ public: BEAST_EXPECTS(bt == 0, std::to_string(0)); } + { + // bytes_transferred returns length of header + request_parser p; + test::stream s(ioc); + s.append(string_view(hdr)); + s.append(string_view(body)); + std::string res ; + auto fb = asio::dynamic_buffer(res); + error_code ec; + auto bt = read_header(s, fb, p, ec); + BEAST_EXPECTS(!ec, ec.message()); + BEAST_EXPECT(bt == hdr.size()); + + // next read should be zero-size, success + bt = read_header(s, fb, p, ec); + BEAST_EXPECTS(!ec, ec.message()); + BEAST_EXPECTS(bt == 0, std::to_string(0)); + } + { // incomplete header consumes all parsable header bytes request_parser p; diff --git a/test/beast/websocket/read1.cpp b/test/beast/websocket/read1.cpp index 1e98e454..20048dd8 100644 --- a/test/beast/websocket/read1.cpp +++ b/test/beast/websocket/read1.cpp @@ -137,6 +137,30 @@ public: beast::error::timeout)); test::run(ioc); } + + { + stream ws1(ioc); + stream ws2(ioc); + test::connect(ws1.next_layer(), ws2.next_layer()); + ws1.async_handshake("test", "/", test::success_handler()); + ws2.async_accept(test::success_handler()); + test::run(ioc); + + std::string res ; + auto b = asio::dynamic_buffer(res); + ws1.set_option(stream_base::timeout{ + stream_base::none(), + std::chrono::milliseconds(50), + false}); + ws1.async_read(b, test::success_handler()); + ws2.async_write(net::const_buffer("Hello, world!", 13), + test::success_handler()); + test::run(ioc); + + BEAST_EXPECT(res == "Hello, world!"); + } + + } void