重构协程
This commit is contained in:
@@ -47,7 +47,7 @@ struct Output_Format {
|
||||
class Data_Feed {
|
||||
public:
|
||||
virtual ~Data_Feed() = default;
|
||||
std::unique_ptr<psco::awaitable<void>> loop_task;
|
||||
std::unique_ptr<concurrencpp::result<void>> loop_task;
|
||||
BIN_Msg_Buffer msg_buffer{};
|
||||
std::string key;
|
||||
bool enable = false;
|
||||
@@ -57,11 +57,11 @@ public:
|
||||
virtual void handle_in_loop() {
|
||||
|
||||
}
|
||||
virtual psco::awaitable<void> handle_in_loop_coro() {
|
||||
virtual concurrencpp::result<void> handle_in_loop_coro() {
|
||||
handle_in_loop();
|
||||
co_return;
|
||||
}
|
||||
virtual psco::awaitable<void> send_coro(const std::string&) {
|
||||
virtual concurrencpp::result<void> send_coro(const std::string&) {
|
||||
co_return;
|
||||
}
|
||||
virtual Psc::JSON to_json() {
|
||||
@@ -99,7 +99,7 @@ public:
|
||||
}
|
||||
|
||||
std::string to_string() {
|
||||
return "Data_Feed【" + VAR_STR_3(key, enable, type) + "】";
|
||||
return "Data_Feed{" + VAR_STR_3(key, enable, type) + "}";
|
||||
}
|
||||
|
||||
bool registered();
|
||||
@@ -136,14 +136,14 @@ public:
|
||||
~Data_Feed_TCP_Server() override {}
|
||||
void handle_in_loop() override {
|
||||
//std::cout << socket.to_string() << "flush_clients" << std::endl;
|
||||
psco::sync_await(handle_in_loop_coro());
|
||||
(handle_in_loop_coro()).get();
|
||||
}
|
||||
psco::awaitable<void> handle_in_loop_coro() override {
|
||||
concurrencpp::result<void> handle_in_loop_coro() override {
|
||||
co_await svr.flush_clients_coro();
|
||||
co_await svr.tick_coro();
|
||||
co_return;
|
||||
}
|
||||
psco::awaitable<void> send_coro(const std::string& data) override {
|
||||
concurrencpp::result<void> send_coro(const std::string& data) override {
|
||||
co_await svr.write_to_all_clients_coro(data);
|
||||
co_return;
|
||||
}
|
||||
@@ -166,7 +166,7 @@ public:
|
||||
svr.set_connect_system_buffer_size(connect_system_buffer_size);
|
||||
svr.set_tcp_no_delay(false);
|
||||
svr.create();
|
||||
return psco::sync_await(svr.listen_coro("0.0.0.0", port));
|
||||
return (svr.listen_coro("0.0.0.0", port)).get();
|
||||
}
|
||||
Psc::JSON get_clients_json() {
|
||||
Psc::JSON ret = Psc::JSON::array();
|
||||
@@ -191,7 +191,7 @@ public:
|
||||
{
|
||||
auto& ins = conn->send_num.instant;
|
||||
auto& avr =conn->send_num.average;
|
||||
cur.append({"send_num(byte/次)", VAR_STR_2(ins, avr)});
|
||||
cur.append({"send_num(byte/count)", VAR_STR_2(ins, avr)});
|
||||
}
|
||||
ret.append(cur);
|
||||
}
|
||||
@@ -203,13 +203,13 @@ public:
|
||||
class Data_Feed_TCP_Client : public Data_Feed {
|
||||
public:
|
||||
void handle_in_loop() override {
|
||||
psco::sync_await(handle_in_loop_coro());
|
||||
(handle_in_loop_coro()).get();
|
||||
}
|
||||
psco::awaitable<void> handle_in_loop_coro() override {
|
||||
concurrencpp::result<void> handle_in_loop_coro() override {
|
||||
co_await cli.tick_coro();
|
||||
co_return;
|
||||
}
|
||||
psco::awaitable<void> send_coro(const std::string& data) override {
|
||||
concurrencpp::result<void> send_coro(const std::string& data) override {
|
||||
co_await cli.send_coro(data);
|
||||
co_return;
|
||||
}
|
||||
@@ -228,7 +228,7 @@ public:
|
||||
sockaddr_in.port = port;
|
||||
cli.set_dest_address(sockaddr_in);
|
||||
cli.create();
|
||||
psco::sync_await(cli.connect_coro());
|
||||
(cli.connect_coro()).get();
|
||||
return true;
|
||||
}
|
||||
void from_json(const Psc::JSON* that_json) override {
|
||||
@@ -258,8 +258,8 @@ public:
|
||||
Data_Feed_UDP_Server()= default;
|
||||
~Data_Feed_UDP_Server() override = default;
|
||||
void handle_in_loop() override;
|
||||
psco::awaitable<void> handle_in_loop_coro() override;
|
||||
psco::awaitable<void> send_coro(const std::string& data) override;
|
||||
concurrencpp::result<void> handle_in_loop_coro() override;
|
||||
concurrencpp::result<void> send_coro(const std::string& data) override;
|
||||
[[nodiscard]] Psc::JSON get_clients_json() const {
|
||||
Psc::JSON ret = Psc::JSON::array();
|
||||
for (const auto& i : svr.clients) {
|
||||
@@ -296,13 +296,13 @@ public:
|
||||
return VAR_JSON_1(state);
|
||||
}
|
||||
void handle_in_loop() override {
|
||||
psco::sync_await(handle_in_loop_coro());
|
||||
(handle_in_loop_coro()).get();
|
||||
}
|
||||
psco::awaitable<void> handle_in_loop_coro() override {
|
||||
concurrencpp::result<void> handle_in_loop_coro() override {
|
||||
co_await cli.tick_coro();
|
||||
co_return;
|
||||
}
|
||||
psco::awaitable<void> send_coro(const std::string& data) override {
|
||||
concurrencpp::result<void> send_coro(const std::string& data) override {
|
||||
co_await cli.send_coro(data);
|
||||
co_return;
|
||||
}
|
||||
@@ -321,13 +321,13 @@ public:
|
||||
return ret;
|
||||
}
|
||||
void _close() override {
|
||||
std::cout << "udp客户端 目标地址:" << cli.dest_address.to_string() << "关闭!" << std::endl;
|
||||
std::cout << "udp client target address:" << cli.dest_address.to_string() << " closed" << std::endl;
|
||||
cli.close();
|
||||
}
|
||||
bool _open() override {
|
||||
cli.create();
|
||||
cli.set_dest_address(url, port);
|
||||
psco::sync_await(cli.connect_coro());
|
||||
(cli.connect_coro()).get();
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -340,7 +340,7 @@ inline std::shared_ptr<Data_Feed> create_data_feed_from_type(const std::string&
|
||||
if (t == "Data_Feed_UDP_Server") ret = std::make_shared<Data_Feed_UDP_Server>(); else
|
||||
if (t == "Data_Feed_TCP_Client") ret = std::make_shared<Data_Feed_TCP_Client>(); else
|
||||
if (t == "Data_Feed_UDP_Client") ret = std::make_shared<Data_Feed_UDP_Client>(); else {
|
||||
std::cout << "未知的 Data_Feed type类型! t:[" << t << "]"<< std::endl;
|
||||
std::cout << "鏈煡鐨? Data_Feed type绫诲瀷! t:[" << t << "]"<< std::endl;
|
||||
throw std::invalid_argument("unknown Data_Feed type: " + t);
|
||||
}
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user