From dc463bc8122c6347583f17dce35ea1180c32836b Mon Sep 17 00:00:00 2001 From: Jari van der Kaap Date: Sat, 22 Apr 2023 21:34:32 +0200 Subject: [PATCH] fix merge --- src/client/component/server_list.cpp | 80 +++++++++++++++------------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/src/client/component/server_list.cpp b/src/client/component/server_list.cpp index d699fbc0..e21a5fc9 100644 --- a/src/client/component/server_list.cpp +++ b/src/client/component/server_list.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include "network.hpp" #include "scheduler.hpp" @@ -20,7 +21,7 @@ namespace server_list struct state { game::netadr_t address{}; - bool requesting{false}; + bool requesting{ false }; std::chrono::high_resolution_clock::time_point query_start{}; callback callback{}; }; @@ -30,7 +31,7 @@ namespace server_list utils::concurrency::container favorite_servers{}; void handle_server_list_response(const game::netadr_t& target, - const network::data_view& data, state& s) + const network::data_view& data, state& s) { if (!s.requesting || s.address != target) { @@ -142,20 +143,20 @@ namespace server_list void request_servers(callback callback) { master_state.access([&callback](state& s) - { - game::netadr_t addr{}; - if (!get_master_server(addr)) { - return; - } + game::netadr_t addr{}; + if (!get_master_server(addr)) + { + return; + } - s.requesting = true; - s.address = addr; - s.callback = std::move(callback); - s.query_start = std::chrono::high_resolution_clock::now(); + s.requesting = true; + s.address = addr; + s.callback = std::move(callback); + s.query_start = std::chrono::high_resolution_clock::now(); - network::send(s.address, "getservers", utils::string::va("T7 %i full empty", PROTOCOL)); - }); + network::send(s.address, "getservers", utils::string::va("T7 %i full empty", PROTOCOL)); + }); } void add_favorite_server(game::netadr_t addr) @@ -193,44 +194,49 @@ namespace server_list void post_unpack() override { network::on("getServersResponse", [](const game::netadr_t& target, const network::data_view& data) - { - master_state.access([&](state& s) { - handle_server_list_response(target, data, s); + master_state.access([&](state& s) + { + handle_server_list_response(target, data, s); + }); }); - }); scheduler::loop([] - { - master_state.access([](state& s) { - if (!s.requesting) - { - return; - } + master_state.access([](state& s) + { + if (!s.requesting) + { + return; + } - const auto now = std::chrono::high_resolution_clock::now(); - if ((now - s.query_start) < 2s) - { - return; - } + const auto now = std::chrono::high_resolution_clock::now(); + if ((now - s.query_start) < 2s) + { + return; + } - s.requesting = false; - s.callback(false, {}); - s.callback = {}; - }); - }, scheduler::async, 200ms); + s.requesting = false; + s.callback(false, {}); + s.callback = {}; + }); + }, scheduler::async, 200ms); lua_serverinfo_to_table_hook.create(0x141F1FD10_g, lua_serverinfo_to_table_stub); + + scheduler::once([] + { + read_favorite_servers(); + }, scheduler::main); } void pre_destroy() override { master_state.access([](state& s) - { - s.requesting = false; - s.callback = {}; - }); + { + s.requesting = false; + s.callback = {}; + }); } }; }