Skip to content

Commit e17a80a

Browse files
committed
feat: Refactored the async API.
- Restarting the I/O loop uses an API that no longer relies on operator overloads, and uses a more sensible naming scheme for submitting i/O operations.
1 parent 9390b9b commit e17a80a

File tree

6 files changed

+26
-25
lines changed

6 files changed

+26
-25
lines changed

include/net/service/async_tcp_service.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,13 @@ class async_tcp_service {
115115
*/
116116
auto start(async_context &ctx) noexcept -> void;
117117
/**
118-
* @brief Read data from a connected socket.
118+
* @brief Submits an asynchronous socket recv.
119119
* @param ctx The async context to start the reader on.
120120
* @param socket the socket to read data from.
121121
* @param rctx A shared pointer to a mutable read buffer.
122122
*/
123-
auto reader(async_context &ctx, const socket_dialog &socket,
124-
std::shared_ptr<read_context> rctx) -> void;
123+
auto submit_recv(async_context &ctx, const socket_dialog &socket,
124+
std::shared_ptr<read_context> rctx) -> void;
125125

126126
protected:
127127
/** @brief Default constructor. */

include/net/service/async_udp_service.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,13 @@ class async_udp_service {
118118
*/
119119
auto start(async_context &ctx) noexcept -> void;
120120
/**
121-
* @brief Read data from a connected socket.
121+
* @brief Submits an asynchronous socket recv.
122122
* @param ctx The async context to start the reader on.
123123
* @param socket the socket to read data from.
124124
* @param rctx A shared pointer to a mutable read buffer.
125125
*/
126-
auto reader(async_context &ctx, const socket_dialog &socket,
127-
std::shared_ptr<read_context> rctx) -> void;
126+
auto submit_recv(async_context &ctx, const socket_dialog &socket,
127+
std::shared_ptr<read_context> rctx) -> void;
128128

129129
protected:
130130
/** @brief Default constructor. */

include/net/service/impl/async_tcp_service_impl.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ auto async_tcp_service<TCPStreamHandler, Size>::acceptor(
8484
}
8585

8686
template <typename TCPStreamHandler, std::size_t Size>
87-
auto async_tcp_service<TCPStreamHandler, Size>::reader(
87+
auto async_tcp_service<TCPStreamHandler, Size>::submit_recv(
8888
async_context &ctx, const socket_dialog &socket,
8989
std::shared_ptr<read_context> rctx) -> void
9090
{
@@ -113,8 +113,8 @@ auto async_tcp_service<TCPStreamHandler, Size>::emit(
113113
async_context &ctx, const socket_dialog &socket,
114114
std::shared_ptr<read_context> rctx, std::span<const std::byte> buf) -> void
115115
{
116-
auto &handle = static_cast<TCPStreamHandler &>(*this);
117-
handle(ctx, socket, std::move(rctx), buf);
116+
static_cast<TCPStreamHandler *>(this)->service(ctx, socket, std::move(rctx),
117+
buf);
118118
}
119119

120120
template <typename TCPStreamHandler, std::size_t Size>

include/net/service/impl/async_udp_service_impl.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ auto async_udp_service<UDPStreamHandler, Size>::start(
5454

5555
server_sockfd_ = static_cast<socket_type>(sock);
5656

57-
reader(ctx, ctx.poller.emplace(std::move(sock)),
58-
std::make_shared<read_context>());
57+
submit_recv(ctx, ctx.poller.emplace(std::move(sock)),
58+
std::make_shared<read_context>());
5959
}
6060

6161
template <typename UDPStreamHandler, std::size_t Size>
62-
auto async_udp_service<UDPStreamHandler, Size>::reader(
62+
auto async_udp_service<UDPStreamHandler, Size>::submit_recv(
6363
async_context &ctx, const socket_dialog &socket,
6464
std::shared_ptr<read_context> rctx) -> void
6565
{
@@ -84,8 +84,8 @@ auto async_udp_service<UDPStreamHandler, Size>::emit(
8484
async_context &ctx, const socket_dialog &socket,
8585
std::shared_ptr<read_context> rctx, std::span<const std::byte> buf) -> void
8686
{
87-
auto &handle = static_cast<UDPStreamHandler &>(*this);
88-
handle(ctx, socket, std::move(rctx), buf);
87+
static_cast<UDPStreamHandler *>(this)->service(ctx, socket, std::move(rctx),
88+
buf);
8989
}
9090

9191
template <typename UDPStreamHandler, std::size_t Size>

tests/test_tcp_fixture.hpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,18 @@ struct tcp_echo_service : public async_tcp_service<tcp_echo_service> {
5353
using namespace io::socket;
5454
using namespace stdexec;
5555

56-
sender auto sendmsg =
57-
io::sendmsg(socket, msg, 0) |
58-
then([&, socket, rctx](auto &&len) { reader(ctx, socket, rctx); }) |
59-
upon_error([](auto &&error) {});
56+
sender auto sendmsg = io::sendmsg(socket, msg, 0) |
57+
then([&, socket, rctx](auto &&len) {
58+
submit_recv(ctx, socket, rctx);
59+
}) |
60+
upon_error([](auto &&error) {});
6061

6162
ctx.scope.spawn(std::move(sendmsg));
6263
}
6364

64-
auto operator()(async_context &ctx, const socket_dialog &socket,
65-
std::shared_ptr<read_context> rctx,
66-
std::span<const std::byte> buf) -> void
65+
auto service(async_context &ctx, const socket_dialog &socket,
66+
std::shared_ptr<read_context> rctx,
67+
std::span<const std::byte> buf) -> void
6768
{
6869
echo(ctx, socket, rctx, {.buffers = buf});
6970
}

tests/test_udp_fixture.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,16 @@ struct udp_echo_service : public async_udp_service<udp_echo_service> {
5252

5353
sender auto sendmsg = io::sendmsg(socket, msg, 0) |
5454
then([&, socket, rctx, msg](auto &&len) mutable {
55-
reader(ctx, socket, std::move(rctx));
55+
submit_recv(ctx, socket, std::move(rctx));
5656
}) |
5757
upon_error([](auto &&error) {});
5858

5959
ctx.scope.spawn(std::move(sendmsg));
6060
}
6161

62-
auto operator()(async_context &ctx, const socket_dialog &socket,
63-
std::shared_ptr<read_context> rctx,
64-
std::span<const std::byte> buf) -> void
62+
auto service(async_context &ctx, const socket_dialog &socket,
63+
std::shared_ptr<read_context> rctx,
64+
std::span<const std::byte> buf) -> void
6565
{
6666
using namespace io::socket;
6767
if (!rctx)

0 commit comments

Comments
 (0)