#pragma once #include #include #include namespace vanetza { namespace rpc { class AsioStream : public kj::AsyncIoStream { public: AsioStream(boost::asio::ip::tcp::socket socket); void shutdownWrite() override; kj::Promise write(const void* buffer, size_t size) override; kj::Promise write(kj::ArrayPtr> pieces) override; kj::Promise whenWriteDisconnected() override; kj::Promise tryRead(void* buffer, size_t minBytes, size_t maxBytes) override; private: void signalDisconnect(const boost::system::error_code& ec); boost::asio::ip::tcp::socket socket_; kj::Maybe> disconnect_promise_; kj::Maybe>> disconnect_fulfiller_; }; } // namepsace rpc } // namespace vanetza