修复问题

This commit is contained in:
2026-08-09 15:30:12 +08:00
parent 6fe0bed78e
commit 4b9dd5c199
15 changed files with 616 additions and 278 deletions
+3 -3
View File
@@ -19,7 +19,7 @@ asio::awaitable<void> Data_Feed_UDP_Server::send_coro(std::string_view data) {
co_return;
}
asio::awaitable<void> Data_Feed_UDP_Server::_open() {
const auto value = specific.snapshot();
const auto value = specific.read([](const auto& value) { return value; });
svr.set_bind_address("0.0.0.0", value.port);
svr.create();
server_logger->c_debug({}, {}, to_string() + "开启!");
@@ -60,7 +60,7 @@ void Data_feed_Config::server(Global* g) {
});
}
void BIN_Msg_Buffer::push(std::string_view msg) {
auto output_packet_size = Global::instance()->mode_acs.data_feed_config.settings.member<&Data_feed_Config_Data::packet_byte_size>().snapshot();
auto output_packet_size = Global::instance()->mode_acs.data_feed_config.settings.member<&Data_feed_Config_Data::packet_byte_size>().read([](const auto& value) { return value; });
std::lock_guard<std::mutex> g(mtx);
auto& pool = Global::instance()->mode_acs.data_feed_config.pool_;
if (msg_list_cache.empty() || msg_list_cache.back()->size() > output_packet_size) {
@@ -85,7 +85,7 @@ BIN_Msg_Buffer::BIN_Msg_Buffer() {
msg_list.reserve(8 * 1024);
}
Psc::JSON BIN_Msg_Buffer::state_json() {
auto output_packet_size = Global::instance()->mode_acs.data_feed_config.settings.member<&Data_feed_Config_Data::packet_byte_size>().snapshot();
auto output_packet_size = Global::instance()->mode_acs.data_feed_config.settings.member<&Data_feed_Config_Data::packet_byte_size>().read([](const auto& value) { return value; });
size_t size, cache_size, pool_capacity, pool_free_count;
{
std::lock_guard<std::mutex> g(mtx);
+22 -34
View File
@@ -44,15 +44,13 @@ public:
}
virtual Psc::JSON to_json() {
Psc::JSON ret = With_Loop_Coro::to_base_json();
ret.append(Psc::JSON("output_format", output_format.snapshot().to_base_json()));
ret.append(Psc::JSON("output_format", output_format.read([](const auto& value) { return value.to_base_json(); })));
return ret;
}
virtual void from_json(const Psc::JSON* that_json, bool not_exist_use_default_value) {
With_Loop_Coro::from_base_json(that_json, not_exist_use_default_value);
auto value = output_format.snapshot();
value.from_base_json(that_json->get("output_format"), not_exist_use_default_value);
output_format.write([&](auto& target) {
target = value;
output_format.write([&](auto& value) {
value.from_base_json(that_json->get("output_format"), not_exist_use_default_value);
});
}
virtual Psc::JSON get_custom_state_json() {
@@ -96,7 +94,7 @@ public:
Psc::asio_socket::TCP_Server_Coro svr;
Psc::JSON get_custom_state_json() override {
auto& state = svr.state;
auto value = specific.snapshot();
auto value = specific.read([](const auto& value) { return value; });
auto ret = value.to_base_json();
ret.key = "fixed";
auto result = VAR_JSON_1(state);
@@ -115,21 +113,19 @@ public:
}
void from_json(const Psc::JSON* that_json, bool not_exist_use_default_value) override {
Data_Feed::from_json(that_json, not_exist_use_default_value);
auto value = specific.snapshot();
value.from_base_json(that_json, not_exist_use_default_value);
specific.write([&](auto& target) {
target = value;
specific.write([&](auto& value) {
value.from_base_json(that_json, not_exist_use_default_value);
});
}
Psc::JSON to_json() override {
return Data_Feed::to_json() += specific.snapshot().to_base_json();
return Data_Feed::to_json() += specific.read([](const auto& value) { return value.to_base_json(); });
}
asio::awaitable<void> _close() override {
co_await svr.close_coro();
co_return;
}
asio::awaitable<void> _open() override {
const auto value = specific.snapshot();
const auto value = specific.read([](const auto& value) { return value; });
svr.set_connect_user_buffer_size(value.connect_user_buffer_size);
svr.set_connect_system_buffer_size(value.connect_system_buffer_size);
svr.set_tcp_no_delay(false);
@@ -206,7 +202,7 @@ public:
co_return;
}
asio::awaitable<void> _open() override {
const auto value = specific.snapshot();
const auto value = specific.read([](const auto& value) { return value; });
Psc::asio_socket::Sockaddr_In sockaddr_in;
sockaddr_in.ip = value.url;
sockaddr_in.port = value.port;
@@ -217,14 +213,12 @@ public:
}
void from_json(const Psc::JSON* that_json, bool not_exist_use_default_value) override {
Data_Feed::from_json(that_json, not_exist_use_default_value);
auto value = specific.snapshot();
value.from_base_json(that_json, not_exist_use_default_value);
specific.write([&](auto& target) {
target = value;
specific.write([&](auto& value) {
value.from_base_json(that_json, not_exist_use_default_value);
});
}
Psc::JSON to_json() override {
return Data_Feed::to_json() += specific.snapshot().to_base_json();
return Data_Feed::to_json() += specific.read([](const auto& value) { return value.to_base_json(); });
}
};
class Data_Feed_UDP_Server_Data {
@@ -265,14 +259,12 @@ public:
}
void from_json(const Psc::JSON* that_json, bool not_exist_use_default_value) override {
Data_Feed::from_json(that_json, not_exist_use_default_value);
auto value = specific.snapshot();
value.from_base_json(that_json, not_exist_use_default_value);
specific.write([&](auto& target) {
target = value;
specific.write([&](auto& value) {
value.from_base_json(that_json, not_exist_use_default_value);
});
}
Psc::JSON to_json() override {
return Data_Feed::to_json() += specific.snapshot().to_base_json();
return Data_Feed::to_json() += specific.read([](const auto& value) { return value.to_base_json(); });
}
asio::awaitable<void> _close() override {
co_await svr.close_coro();
@@ -316,14 +308,12 @@ public:
Psc::asio_socket::UDP_Client_Coro cli;
void from_json(const Psc::JSON* that_json, bool not_exist_use_default_value) override {
Data_Feed::from_json(that_json, not_exist_use_default_value);
auto value = specific.snapshot();
value.from_base_json(that_json, not_exist_use_default_value);
specific.write([&](auto& target) {
target = value;
specific.write([&](auto& value) {
value.from_base_json(that_json, not_exist_use_default_value);
});
}
Psc::JSON to_json() override {
return Data_Feed::to_json() += specific.snapshot().to_base_json();
return Data_Feed::to_json() += specific.read([](const auto& value) { return value.to_base_json(); });
}
asio::awaitable<void> _close() override {
std::cout << "udp client target address:" << cli.dest_address.to_string() << " closed" << std::endl;
@@ -331,7 +321,7 @@ public:
co_return;
}
asio::awaitable<void> _open() override {
const auto value = specific.snapshot();
const auto value = specific.read([](const auto& value) { return value; });
cli.create();
cli.set_dest_address(value.url, value.port);
co_await cli.connect_coro();
@@ -392,10 +382,8 @@ public:
t->from_json(&it, not_exist_use_default_value);
map.push_back(t);
}
auto value = settings.snapshot();
value.from_base_json(that_json, not_exist_use_default_value);
settings.write([&](auto& target) {
target = value;
settings.write([&](auto& value) {
value.from_base_json(that_json, not_exist_use_default_value);
});
}
Psc::JSON list() const {
@@ -406,7 +394,7 @@ public:
return connect_json;
}
Psc::JSON to_json() const {
Psc::JSON ret = settings.snapshot().to_base_json();
Psc::JSON ret = settings.read([](const auto& value) { return value.to_base_json(); });
ret.append({"list", list()});
return ret;
}