@@ -87,37 +87,35 @@ auto async_tcp_service<TCPStreamHandler>::acceptor(
8787template <typename TCPStreamHandler>
8888auto async_tcp_service<TCPStreamHandler>::reader(
8989 async_context &ctx, const socket_dialog &socket,
90- std::shared_ptr<read_context> rmsg ) -> void
90+ std::shared_ptr<read_context> rctx ) -> void
9191{
9292 using namespace stdexec ;
9393 using namespace io ::socket;
94- if (ctx.scope .get_stop_token ().stop_requested ())
94+ if (!rctx || ctx.scope .get_stop_token ().stop_requested ())
9595 return ;
9696
9797 sender auto recvmsg =
98- io::recvmsg (socket, rmsg ->msg , 0 ) |
99- then ([&, socket, rmsg ](auto &&len) mutable {
98+ io::recvmsg (socket, rctx ->msg , 0 ) |
99+ then ([&, socket, rctx ](auto &&len) mutable {
100100 using size_type = std::size_t ;
101101 if (!len)
102- return emit (ctx, socket, {}, std::span<std::byte>{} );
102+ return emit (ctx, socket);
103103
104- auto buf = std::span{rmsg ->buffer .data (), static_cast <size_type>(len)};
105- emit (ctx, socket, std::move (rmsg ), buf);
104+ auto buf = std::span{rctx ->buffer .data (), static_cast <size_type>(len)};
105+ emit (ctx, socket, std::move (rctx ), buf);
106106 }) |
107- upon_error ([&, socket](auto &&error) {
108- emit (ctx, socket, {}, std::span<std::byte>{});
109- });
107+ upon_error ([&, socket](auto &&error) { emit (ctx, socket); });
110108
111109 ctx.scope .spawn (std::move (recvmsg));
112110}
113111
114112template <typename TCPStreamHandler>
115113auto async_tcp_service<TCPStreamHandler>::emit(
116114 async_context &ctx, const socket_dialog &socket,
117- std::shared_ptr<read_context> rmsg , std::span<const std::byte> buf) -> void
115+ std::shared_ptr<read_context> rctx , std::span<const std::byte> buf) -> void
118116{
119117 auto &handle = static_cast <TCPStreamHandler &>(*this );
120- handle (ctx, socket, std::move (rmsg ), buf);
118+ handle (ctx, socket, std::move (rctx ), buf);
121119}
122120
123121template <typename TCPStreamHandler>
0 commit comments