From 816c7c3c1dfbcd9958d8e5f28d688ae4e8384079 Mon Sep 17 00:00:00 2001 From: wyc <1104749580@qq.com> Date: Tue, 23 Jun 2026 09:23:01 +0800 Subject: [PATCH] =?UTF-8?q?tcp=20udp=20=E6=94=B9=E5=8D=8F=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmake/FindFilesystem.cmake | 7 +++++++ module/Local_Server/Data_Feed/Data_Feed.cpp | 2 +- module/Local_Server/Data_Feed/Data_Feed.h | 14 +++++++------- module/Local_Server/Data_Feed/data_feed_thread.cpp | 8 ++++---- module/Local_Server/Data_Source/Data_Source.h | 5 +++-- 5 files changed, 22 insertions(+), 14 deletions(-) create mode 100644 cmake/FindFilesystem.cmake diff --git a/cmake/FindFilesystem.cmake b/cmake/FindFilesystem.cmake new file mode 100644 index 0000000..a664f84 --- /dev/null +++ b/cmake/FindFilesystem.cmake @@ -0,0 +1,7 @@ +if(NOT TARGET std::filesystem) + add_library(std::filesystem INTERFACE IMPORTED GLOBAL) + set_property(TARGET std::filesystem APPEND PROPERTY INTERFACE_COMPILE_FEATURES cxx_std_17) +endif() + +set(Filesystem_FOUND TRUE) +set(Filesystem_Final_FOUND TRUE) diff --git a/module/Local_Server/Data_Feed/Data_Feed.cpp b/module/Local_Server/Data_Feed/Data_Feed.cpp index a5d0402..950db64 100644 --- a/module/Local_Server/Data_Feed/Data_Feed.cpp +++ b/module/Local_Server/Data_Feed/Data_Feed.cpp @@ -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); diff --git a/module/Local_Server/Data_Feed/Data_Feed.h b/module/Local_Server/Data_Feed/Data_Feed.h index b54ff23..eb5d422 100644 --- a/module/Local_Server/Data_Feed/Data_Feed.h +++ b/module/Local_Server/Data_Feed/Data_Feed.h @@ -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; } }; diff --git a/module/Local_Server/Data_Feed/data_feed_thread.cpp b/module/Local_Server/Data_Feed/data_feed_thread.cpp index 667c485..29189f1 100644 --- a/module/Local_Server/Data_Feed/data_feed_thread.cpp +++ b/module/Local_Server/Data_Feed/data_feed_thread.cpp @@ -202,19 +202,19 @@ void data_feed_thread(std::atomic& running) { } if (feed->type == "Data_Feed_TCP_Server") { auto it = dynamic_cast(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(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(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(feed.get()); - it->cli.send(*str); + ucoro::sync_await(it->cli.send_coro(*str)); } } } diff --git a/module/Local_Server/Data_Source/Data_Source.h b/module/Local_Server/Data_Source/Data_Source.h index dc8439c..ee5331a 100644 --- a/module/Local_Server/Data_Source/Data_Source.h +++ b/module/Local_Server/Data_Source/Data_Source.h @@ -224,7 +224,7 @@ protected: struct TCP_Client_Data_Source : Data_Source { void handle_in_loop() override { - cli.tick(); + ucoro::sync_await(cli.tick_coro()); } Psc::JSON get_custom_state_json() override { auto& state = cli.state; @@ -245,6 +245,7 @@ struct TCP_Client_Data_Source : Data_Source { cli.set_dest_address(addr); cli.create(); + ucoro::sync_await(cli.connect_coro()); return true; } void _close() override { cli.close(); } @@ -262,7 +263,7 @@ struct TCP_Client_Data_Source : Data_Source { } std::string read() override { - return cli.read(); + return ucoro::sync_await(cli.read_coro()); } }; struct Serial_Data_Source : Data_Source {