tcp udp 改协程
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user