24 TCPConnection(boost::asio::io_context& ctx);
25 ~TCPConnection()
override;
34 void async_send(
const std::vector<uint8_t>& data)
override;
37 std::function<
void(std::vector<uint8_t>)> handler
38 )
override { on_frame_ = std::move(handler); }
41 void start_read_header();
42 void start_read_body(uint32_t length);
45 void handle_disconnect(
const std::string& reason);
46 void handle_disconnect(
const std::error_code& reason);
48 std::unique_ptr<Web::CMFetcher> fetcher_;
51 std::array<uint8_t, 8> header_buffer_;
52 std::vector<uint8_t> body_buffer_;
53 std::deque<std::vector<uint8_t>> write_queue_;
57 const std::array<uint8_t, 4> MAGIC = {
'V',
'T',
'0',
'1'};
59 boost::asio::io_context& ctx;
60 boost::asio::ip::tcp::socket socket_;
61 std::function<void(
const std::vector<uint8_t>&)> wait_for_callback;
62 std::function<void(std::vector<uint8_t>)> on_frame_;