tcp udp 改协程

This commit is contained in:
2026-06-23 09:23:01 +08:00
parent 9a140f7379
commit 816c7c3c1d
5 changed files with 22 additions and 14 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
#include "Local_Server/Data_Feed/Data_Feed.h"
#include "../server/Global.h"
void Data_Feed_UDP_Server::handle_in_loop() {
svr.tick();
ucoro::sync_await(svr.tick_coro());
}
bool Data_Feed_UDP_Server::_open() {
svr.set_bind_address("0.0.0.0", port);
+7 -7
View File
@@ -126,8 +126,8 @@ public:
~Data_Feed_TCP_Server() override {}
void handle_in_loop() override {
//std::cout << socket.to_string() << "flush_clients" << std::endl;
svr.flush_clients();
svr.tick();
ucoro::sync_await(svr.flush_clients_coro());
ucoro::sync_await(svr.tick_coro());
}
void from_json(const Psc::JSON* that_json) override {
Data_Feed::from_json(that_json);
@@ -148,8 +148,7 @@ public:
svr.set_connect_system_buffer_size(connect_system_buffer_size);
svr.set_tcp_no_delay(false);
svr.create();
bool ok = svr.listen("0.0.0.0", port);
return true;
return ucoro::sync_await(svr.listen_coro("0.0.0.0", port));
}
Psc::JSON get_clients_json() {
Psc::JSON ret = Psc::JSON::array();
@@ -186,7 +185,7 @@ public:
class Data_Feed_TCP_Client : public Data_Feed {
public:
void handle_in_loop() override {
cli.tick();
ucoro::sync_await(cli.tick_coro());
}
std::string url;
Psc::JSON get_custom_state_json() override {
@@ -203,6 +202,7 @@ public:
sockaddr_in.port = port;
cli.set_dest_address(sockaddr_in);
cli.create();
ucoro::sync_await(cli.connect_coro());
return true;
}
void from_json(const Psc::JSON* that_json) override {
@@ -268,7 +268,7 @@ public:
return VAR_JSON_1(state);
}
void handle_in_loop() override {
cli.tick();
ucoro::sync_await(cli.tick_coro());
}
Psc::asio_socket::UDP_Client cli;
std::string url;
@@ -291,7 +291,7 @@ public:
bool _open() override {
cli.create();
cli.set_dest_address(url, port);
cli.connect();
ucoro::sync_await(cli.connect_coro());
return true;
}
};
@@ -202,19 +202,19 @@ void data_feed_thread(std::atomic<bool>& running) {
}
if (feed->type == "Data_Feed_TCP_Server") {
auto it = dynamic_cast<Data_Feed_TCP_Server*>(feed.get());
it->svr.write_to_all_clients(*str);
ucoro::sync_await(it->svr.write_to_all_clients_coro(*str));
}
else if (feed->type == "Data_Feed_UDP_Server") {
auto it = dynamic_cast<Data_Feed_UDP_Server*>(feed.get());
it->svr.write_to_all_clients(*str);
ucoro::sync_await(it->svr.write_to_all_clients_coro(*str));
}
else if (feed->type == "Data_Feed_TCP_Client") {
auto it = dynamic_cast<Data_Feed_TCP_Client*>(feed.get());
it->cli.send(*str);
ucoro::sync_await(it->cli.send_coro(*str));
}
else if (feed->type == "Data_Feed_UDP_Client") {
auto it = dynamic_cast<Data_Feed_UDP_Client*>(feed.get());
it->cli.send(*str);
ucoro::sync_await(it->cli.send_coro(*str));
}
}
}