tcp udp 改协程
This commit is contained in:
@@ -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)
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "Local_Server/Data_Feed/Data_Feed.h"
|
#include "Local_Server/Data_Feed/Data_Feed.h"
|
||||||
#include "../server/Global.h"
|
#include "../server/Global.h"
|
||||||
void Data_Feed_UDP_Server::handle_in_loop() {
|
void Data_Feed_UDP_Server::handle_in_loop() {
|
||||||
svr.tick();
|
ucoro::sync_await(svr.tick_coro());
|
||||||
}
|
}
|
||||||
bool Data_Feed_UDP_Server::_open() {
|
bool Data_Feed_UDP_Server::_open() {
|
||||||
svr.set_bind_address("0.0.0.0", port);
|
svr.set_bind_address("0.0.0.0", port);
|
||||||
|
|||||||
@@ -126,8 +126,8 @@ public:
|
|||||||
~Data_Feed_TCP_Server() override {}
|
~Data_Feed_TCP_Server() override {}
|
||||||
void handle_in_loop() override {
|
void handle_in_loop() override {
|
||||||
//std::cout << socket.to_string() << "flush_clients" << std::endl;
|
//std::cout << socket.to_string() << "flush_clients" << std::endl;
|
||||||
svr.flush_clients();
|
ucoro::sync_await(svr.flush_clients_coro());
|
||||||
svr.tick();
|
ucoro::sync_await(svr.tick_coro());
|
||||||
}
|
}
|
||||||
void from_json(const Psc::JSON* that_json) override {
|
void from_json(const Psc::JSON* that_json) override {
|
||||||
Data_Feed::from_json(that_json);
|
Data_Feed::from_json(that_json);
|
||||||
@@ -148,8 +148,7 @@ public:
|
|||||||
svr.set_connect_system_buffer_size(connect_system_buffer_size);
|
svr.set_connect_system_buffer_size(connect_system_buffer_size);
|
||||||
svr.set_tcp_no_delay(false);
|
svr.set_tcp_no_delay(false);
|
||||||
svr.create();
|
svr.create();
|
||||||
bool ok = svr.listen("0.0.0.0", port);
|
return ucoro::sync_await(svr.listen_coro("0.0.0.0", port));
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
Psc::JSON get_clients_json() {
|
Psc::JSON get_clients_json() {
|
||||||
Psc::JSON ret = Psc::JSON::array();
|
Psc::JSON ret = Psc::JSON::array();
|
||||||
@@ -186,7 +185,7 @@ public:
|
|||||||
class Data_Feed_TCP_Client : public Data_Feed {
|
class Data_Feed_TCP_Client : public Data_Feed {
|
||||||
public:
|
public:
|
||||||
void handle_in_loop() override {
|
void handle_in_loop() override {
|
||||||
cli.tick();
|
ucoro::sync_await(cli.tick_coro());
|
||||||
}
|
}
|
||||||
std::string url;
|
std::string url;
|
||||||
Psc::JSON get_custom_state_json() override {
|
Psc::JSON get_custom_state_json() override {
|
||||||
@@ -203,6 +202,7 @@ public:
|
|||||||
sockaddr_in.port = port;
|
sockaddr_in.port = port;
|
||||||
cli.set_dest_address(sockaddr_in);
|
cli.set_dest_address(sockaddr_in);
|
||||||
cli.create();
|
cli.create();
|
||||||
|
ucoro::sync_await(cli.connect_coro());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
void from_json(const Psc::JSON* that_json) override {
|
void from_json(const Psc::JSON* that_json) override {
|
||||||
@@ -268,7 +268,7 @@ public:
|
|||||||
return VAR_JSON_1(state);
|
return VAR_JSON_1(state);
|
||||||
}
|
}
|
||||||
void handle_in_loop() override {
|
void handle_in_loop() override {
|
||||||
cli.tick();
|
ucoro::sync_await(cli.tick_coro());
|
||||||
}
|
}
|
||||||
Psc::asio_socket::UDP_Client cli;
|
Psc::asio_socket::UDP_Client cli;
|
||||||
std::string url;
|
std::string url;
|
||||||
@@ -291,7 +291,7 @@ public:
|
|||||||
bool _open() override {
|
bool _open() override {
|
||||||
cli.create();
|
cli.create();
|
||||||
cli.set_dest_address(url, port);
|
cli.set_dest_address(url, port);
|
||||||
cli.connect();
|
ucoro::sync_await(cli.connect_coro());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -202,19 +202,19 @@ void data_feed_thread(std::atomic<bool>& running) {
|
|||||||
}
|
}
|
||||||
if (feed->type == "Data_Feed_TCP_Server") {
|
if (feed->type == "Data_Feed_TCP_Server") {
|
||||||
auto it = dynamic_cast<Data_Feed_TCP_Server*>(feed.get());
|
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") {
|
else if (feed->type == "Data_Feed_UDP_Server") {
|
||||||
auto it = dynamic_cast<Data_Feed_UDP_Server*>(feed.get());
|
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") {
|
else if (feed->type == "Data_Feed_TCP_Client") {
|
||||||
auto it = dynamic_cast<Data_Feed_TCP_Client*>(feed.get());
|
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") {
|
else if (feed->type == "Data_Feed_UDP_Client") {
|
||||||
auto it = dynamic_cast<Data_Feed_UDP_Client*>(feed.get());
|
auto it = dynamic_cast<Data_Feed_UDP_Client*>(feed.get());
|
||||||
it->cli.send(*str);
|
ucoro::sync_await(it->cli.send_coro(*str));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ protected:
|
|||||||
|
|
||||||
struct TCP_Client_Data_Source : Data_Source {
|
struct TCP_Client_Data_Source : Data_Source {
|
||||||
void handle_in_loop() override {
|
void handle_in_loop() override {
|
||||||
cli.tick();
|
ucoro::sync_await(cli.tick_coro());
|
||||||
}
|
}
|
||||||
Psc::JSON get_custom_state_json() override {
|
Psc::JSON get_custom_state_json() override {
|
||||||
auto& state = cli.state;
|
auto& state = cli.state;
|
||||||
@@ -245,6 +245,7 @@ struct TCP_Client_Data_Source : Data_Source {
|
|||||||
|
|
||||||
cli.set_dest_address(addr);
|
cli.set_dest_address(addr);
|
||||||
cli.create();
|
cli.create();
|
||||||
|
ucoro::sync_await(cli.connect_coro());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
void _close() override { cli.close(); }
|
void _close() override { cli.close(); }
|
||||||
@@ -262,7 +263,7 @@ struct TCP_Client_Data_Source : Data_Source {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string read() override {
|
std::string read() override {
|
||||||
return cli.read();
|
return ucoro::sync_await(cli.read_coro());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
struct Serial_Data_Source : Data_Source {
|
struct Serial_Data_Source : Data_Source {
|
||||||
|
|||||||
Reference in New Issue
Block a user