改进协程循环逻辑2

This commit is contained in:
2026-06-25 15:17:55 +08:00
parent 1504db9db0
commit 6a87cf52a8
7 changed files with 86 additions and 88 deletions
+25 -17
View File
@@ -164,17 +164,19 @@ public:
TCP_Client_Data_Source() {
type = "TCP_Client_Data_Source";
}
bool _open() override {
concurrencpp::result<void> _open() override {
Psc::asio_socket::Sockaddr_In addr;
addr.ip = ip;
addr.port = port;
cli.set_dest_address(addr);
cli.create();
(cli.connect_coro()).get();
return true;
co_await cli.connect_coro();
co_return;
}
concurrencpp::result<void> _close() override {
co_await cli.close_coro();
co_return;
}
void _close() override { cli.close(); }
Psc::JSON to_json() override {
Psc::JSON ret = Data_Source::to_json();
@@ -201,7 +203,7 @@ public:
return Psc::JSON::object();
}
Serial_Data_Source() { this->type = "Serial_Data_Source"; }
bool _open() override {
concurrencpp::result<void> _open() override {
serial = std::make_unique<Psc::serial::Serial_Coro>();
serial->set_serial_name(port_name);
serial->set_baud_rate(baud_rate);
@@ -216,9 +218,12 @@ public:
} else {
// std::cerr << "createSerial " + serial_name + ":" + std::to_string(baud_rate) + " 打开串口成功!\n";
}
return ok;
co_return;
}
concurrencpp::result<void> _close() override {
if (serial) serial->close();
co_return;
}
void _close() override { if (serial) serial->close(); }
concurrencpp::result<void> handle_in_loop_coro() override {
if (serial) {
@@ -297,8 +302,8 @@ public:
std::string get_true_file_path() const { return Psc::get_abs_path(file_path); }
void _close() override;
bool _open() override;
concurrencpp::result<void> _close() override;
concurrencpp::result<void> _open() override;
std::vector<std::string> readBinaryFileAsString(const std::string& filepath, size_t part_size);
void from_json(const Psc::JSON *that_json) override {
Data_Source::from_json(that_json);
@@ -368,13 +373,16 @@ public:
using set_Call_back = void (*)(Call_Back);
std::string state;
void _close() override { Psc::free_library(lib); }
bool _open() override {
concurrencpp::result<void> _close() override {
Psc::free_library(lib);
co_return;
}
concurrencpp::result<void> _open() override {
{
auto r = Psc::try_load_library(Psc::get_abs_path(library_path));
if (!r) {
state = r.error().message();
return false;
co_return;
}
lib = r.value();
}
@@ -383,12 +391,12 @@ public:
if (!r) {
state = r.error().message();
std::cout << LOG_POS << " [" << function_name << "] 函数指针加载失败!" << std::endl;
return false;
co_return;
}
read_func_ptr = (Func_Type) r.value();
}
state = "加载成功";
return true;
co_return;
}
void origin_data_transform_mode_data(std::string& data) override;
};
@@ -412,8 +420,8 @@ public:
Ret_J(data_type);
return ret;
}
bool _open() override;
void _close() override;
concurrencpp::result<void> _open() override;
concurrencpp::result<void> _close() override;
void origin_data_transform_mode_data(std::string& data) override;
protected: