concurrencpp 换成asio协程

This commit is contained in:
2026-06-29 08:50:10 +08:00
parent c683038d3a
commit cd446b7ca8
11 changed files with 335 additions and 315 deletions
+19 -19
View File
@@ -17,15 +17,15 @@ public:
BIN_Msg_Buffer msg_buffer{};
Output_Format output_format;
Frequency_Limit_Multi sbs_flm{};
concurrencpp::result<void> loop_coro() final;
asio::awaitable<void> loop_coro() final;
virtual void handle_in_loop() {}
virtual concurrencpp::result<void> handle_in_loop_coro() {
virtual asio::awaitable<void> handle_in_loop_coro() {
handle_in_loop();
co_return;
}
virtual concurrencpp::result<void> send_coro(const std::string&) {
virtual asio::awaitable<void> send_coro(const std::string&) {
co_return;
}
@@ -83,13 +83,13 @@ public:
~Data_Feed_TCP_Server() override = default;
concurrencpp::result<void> handle_in_loop_coro() override {
asio::awaitable<void> handle_in_loop_coro() override {
co_await svr.flush_clients_coro();
co_await svr.tick_coro();
co_return;
}
concurrencpp::result<void> send_coro(const std::string& data) override {
asio::awaitable<void> send_coro(const std::string& data) override {
co_await svr.write_to_all_clients_coro(data);
co_return;
}
@@ -105,12 +105,12 @@ public:
return ret;
}
concurrencpp::result<void> _close() override {
asio::awaitable<void> _close() override {
co_await svr.close_coro();
co_return;
}
concurrencpp::result<void> _open() override {
asio::awaitable<void> _open() override {
svr.set_connect_user_buffer_size(connect_user_buffer_size);
svr.set_connect_system_buffer_size(connect_system_buffer_size);
svr.set_tcp_no_delay(false);
@@ -157,12 +157,12 @@ public:
};
class Data_Feed_TCP_Client : public Data_Feed, public Data_Feed_TCP_Client_Data {
public:
concurrencpp::result<void> handle_in_loop_coro() override {
asio::awaitable<void> handle_in_loop_coro() override {
co_await cli.tick_coro();
co_return;
}
concurrencpp::result<void> send_coro(const std::string& data) override {
asio::awaitable<void> send_coro(const std::string& data) override {
co_await cli.send_coro(data);
co_return;
}
@@ -178,12 +178,12 @@ public:
Psc::asio_socket::TCP_Client_Coro cli;
~Data_Feed_TCP_Client() override = default;
concurrencpp::result<void> _close() override {
asio::awaitable<void> _close() override {
co_await cli.close_coro();
co_return;
}
concurrencpp::result<void> _open() override {
asio::awaitable<void> _open() override {
Psc::asio_socket::Sockaddr_In sockaddr_in;
sockaddr_in.ip = url;
sockaddr_in.port = port;
@@ -216,8 +216,8 @@ public:
Data_Feed_UDP_Server() = default;
~Data_Feed_UDP_Server() override = default;
concurrencpp::result<void> handle_in_loop_coro() override;
concurrencpp::result<void> send_coro(const std::string& data) override;
asio::awaitable<void> handle_in_loop_coro() override;
asio::awaitable<void> send_coro(const std::string& data) override;
[[nodiscard]] Psc::JSON get_clients_json() const {
Psc::JSON ret = Psc::JSON::array();
@@ -239,12 +239,12 @@ public:
return Data_Feed::to_json() += Data_Feed_UDP_Server_Data::to_base_json();
}
concurrencpp::result<void> _close() override {
asio::awaitable<void> _close() override {
co_await svr.close_coro();
co_return;
}
concurrencpp::result<void> _open() override;
asio::awaitable<void> _open() override;
Psc::asio_socket::UDP_Server_Coro svr;
};
class Data_Feed_UDP_Client_Data {
@@ -263,12 +263,12 @@ public:
return VAR_JSON_1(state);
}
concurrencpp::result<void> handle_in_loop_coro() override {
asio::awaitable<void> handle_in_loop_coro() override {
co_await cli.tick_coro();
co_return;
}
concurrencpp::result<void> send_coro(const std::string& data) override {
asio::awaitable<void> send_coro(const std::string& data) override {
co_await cli.send_coro(data);
co_return;
}
@@ -284,14 +284,14 @@ public:
return Data_Feed::to_json() += Data_Feed_UDP_Client_Data::to_base_json();
}
concurrencpp::result<void> _close() override {
asio::awaitable<void> _close() override {
std::cout << "udp client target address:" << cli.dest_address.to_string()
<< " closed" << std::endl;
co_await cli.close_coro();
co_return;
}
concurrencpp::result<void> _open() override {
asio::awaitable<void> _open() override {
cli.create();
cli.set_dest_address(url, port);
co_await cli.connect_coro();