concurrencpp 换成asio协程

This commit is contained in:
2026-06-29 08:50:10 +08:00
parent c683038d3a
commit cd446b7ca8
11 changed files with 335 additions and 315 deletions
+17 -17
View File
@@ -73,15 +73,15 @@ class Data_Source : public std::enable_shared_from_this<Data_Source>,
public Data_Source_Handler, public Data_Source_Data {
public:
std::shared_ptr<Data_Source> that();
virtual concurrencpp::result<std::string> read_coro() {co_return "";}
virtual asio::awaitable<std::string> read_coro() {co_return "";}
bool registered() const;
virtual Psc::JSON get_custom_state_json() = 0;
Psc::JSON get_state();
std::string last_char; // 用于处理奇数字节
Data_Source();
concurrencpp::result<void> loop_coro() final;
asio::awaitable<void> loop_coro() final;
std::shared_ptr<SSR::Mode_Msg> last_prase_msg = nullptr;
virtual concurrencpp::result<void> handle_in_loop_coro() { co_return;}
virtual asio::awaitable<void> handle_in_loop_coro() { co_return;}
Frequency_Limit statistic_fl;
std::string thread_key() const;
Psc::JSON statistic_json() {
@@ -110,7 +110,7 @@ public:
};
class TCP_Client_Data_Source : public Data_Source, public TCP_Client_Data_Source_Data {
public:
concurrencpp::result<void> handle_in_loop_coro() override {
asio::awaitable<void> handle_in_loop_coro() override {
co_await cli.tick_coro();
co_return;
}
@@ -123,7 +123,7 @@ public:
TCP_Client_Data_Source() {
type = "TCP_Client_Data_Source";
}
concurrencpp::result<void> _open() override {
asio::awaitable<void> _open() override {
Psc::asio_socket::Sockaddr_In addr;
addr.ip = ip;
addr.port = port;
@@ -132,7 +132,7 @@ public:
co_await cli.connect_coro();
co_return;
}
concurrencpp::result<void> _close() override {
asio::awaitable<void> _close() override {
co_await cli.close_coro();
co_return;
}
@@ -143,7 +143,7 @@ public:
Data_Source::from_json(that_json);
TCP_Client_Data_Source_Data::from_base_json(that_json);
}
concurrencpp::result<std::string> read_coro() override {
asio::awaitable<std::string> read_coro() override {
co_return co_await cli.read_coro();
}
};
@@ -161,7 +161,7 @@ public:
Serial_Data_Source() {
this->type = "Serial_Data_Source";
}
concurrencpp::result<void> _open() override {
asio::awaitable<void> _open() override {
serial = std::make_unique<Psc::serial::Serial_Coro>();
serial->set_serial_name(port_name);
serial->set_baud_rate(baud_rate);
@@ -181,18 +181,18 @@ public:
}
co_return;
}
concurrencpp::result<void> _close() override {
asio::awaitable<void> _close() override {
if (serial)
serial->close();
co_return;
}
concurrencpp::result<void> handle_in_loop_coro() override {
asio::awaitable<void> handle_in_loop_coro() override {
if (serial) {
co_await serial->tick_coro();
}
co_return;
}
concurrencpp::result<std::string> read_coro() override {
asio::awaitable<std::string> read_coro() override {
if (!serial) {
co_return "";
}
@@ -261,8 +261,8 @@ public:
std::string get_true_file_path() const {
return Psc::get_abs_path(file_path);
}
concurrencpp::result<void> _close() override;
concurrencpp::result<void> _open() override;
asio::awaitable<void> _close() override;
asio::awaitable<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 {
@@ -316,11 +316,11 @@ public:
using Call_Back = void (*)(char* buf, std::size_t len);
using set_Call_back = void (*)(Call_Back);
std::string state;
concurrencpp::result<void> _close() override {
asio::awaitable<void> _close() override {
Psc::free_library(lib);
co_return;
}
concurrencpp::result<void> _open() override {
asio::awaitable<void> _open() override {
{
auto r = Psc::try_load_library(Psc::get_abs_path(library_path));
if (!r) {
@@ -363,8 +363,8 @@ public:
Psc::JSON to_json() override {
return Data_Source::to_json() += Shared_Memory_Data_Source_Data::to_base_json();
}
concurrencpp::result<void> _open() override;
concurrencpp::result<void> _close() override;
asio::awaitable<void> _open() override;
asio::awaitable<void> _close() override;
void origin_data_transform_mode_data(std::string& data) override;
protected:
std::unique_ptr<Psc::SM_RingBuffer> sm;