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
@@ -60,7 +60,7 @@ void run_external_database_async(Work &&work, Callback &&callback) {
}
template <typename T, typename Starter>
concurrencpp::result<T> await_external_database_callback(Starter starter) {
asio::awaitable<T> await_external_database_callback(Starter starter) {
auto result = co_await Psc::coro::callback_result<T>(
[starter = std::move(starter)](auto done) mutable {
starter([done = std::move(done)](std::exception_ptr exception,
@@ -417,7 +417,7 @@ void External_Resources_Manager::async_external_database_status(
[this]() { return external_database_status(); }, std::move(callback));
}
concurrencpp::result<std::vector<External_Resource_Status>>
asio::awaitable<std::vector<External_Resource_Status>>
External_Resources_Manager::refresh_external_databases_coro(
const bool force_download) {
co_return co_await await_external_database_callback<
@@ -427,7 +427,7 @@ External_Resources_Manager::refresh_external_databases_coro(
});
}
concurrencpp::result<External_Resource_Status>
asio::awaitable<External_Resource_Status>
External_Resources_Manager::refresh_external_database_coro(
std::string resource_name, const bool force_download) {
co_return co_await await_external_database_callback<External_Resource_Status>(
@@ -438,7 +438,7 @@ External_Resources_Manager::refresh_external_database_coro(
});
}
concurrencpp::result<External_Resource_Status>
asio::awaitable<External_Resource_Status>
External_Resources_Manager::import_external_database_coro(
std::string resource_name, std::filesystem::path source_file) {
co_return co_await await_external_database_callback<External_Resource_Status>(
@@ -450,7 +450,7 @@ External_Resources_Manager::import_external_database_coro(
});
}
concurrencpp::result<External_Resource_Status>
asio::awaitable<External_Resource_Status>
External_Resources_Manager::clear_external_database_table_coro(
std::string resource_name) {
co_return co_await await_external_database_callback<External_Resource_Status>(
@@ -461,7 +461,7 @@ External_Resources_Manager::clear_external_database_table_coro(
});
}
concurrencpp::result<std::optional<External_Database_Row>>
asio::awaitable<std::optional<External_Database_Row>>
External_Resources_Manager::query_external_database_coro(
std::string resource_name,
std::vector<std::string> primary_key_values) const {
@@ -476,7 +476,7 @@ External_Resources_Manager::query_external_database_coro(
});
}
concurrencpp::result<std::shared_ptr<External_Database_Row_Map>>
asio::awaitable<std::shared_ptr<External_Database_Row_Map>>
External_Resources_Manager::query_aircraft_external_databases_coro(
std::string icao24) const {
auto result = co_await Psc::coro::callback_result<
@@ -497,7 +497,7 @@ External_Resources_Manager::query_aircraft_external_databases_coro(
co_return result;
}
concurrencpp::result<std::shared_ptr<External_Database_Row_Map>>
asio::awaitable<std::shared_ptr<External_Database_Row_Map>>
External_Resources_Manager::query_callsign_external_databases_coro(
std::optional<std::string> callsign) const {
auto result = co_await Psc::coro::callback_result<
@@ -518,7 +518,7 @@ External_Resources_Manager::query_callsign_external_databases_coro(
co_return result;
}
concurrencpp::result<std::vector<External_Resource_Status>>
asio::awaitable<std::vector<External_Resource_Status>>
External_Resources_Manager::external_database_status_coro() const {
co_return co_await await_external_database_callback<
std::vector<External_Resource_Status>>(
@@ -1,7 +1,7 @@
#pragma once
#include "Core/Base/JSON.h"
#include <SQLiteCpp/Database.h>
#include <concurrencpp/concurrencpp.h>
#include <asio/awaitable.hpp>
#include <cstddef>
#include <cstdint>
#include <ctime>
@@ -103,14 +103,14 @@ public:
void async_query_aircraft_external_databases(std::string icao24, Row_Map_Callback callback) const;
void async_query_callsign_external_databases(std::optional<std::string> callsign, Row_Map_Callback callback) const;
void async_external_database_status(Status_List_Callback callback) const;
[[nodiscard]] concurrencpp::result<std::vector<External_Resource_Status>> refresh_external_databases_coro(bool force_download = true);
[[nodiscard]] concurrencpp::result<External_Resource_Status> refresh_external_database_coro(std::string resource_name, bool force_download = true);
[[nodiscard]] concurrencpp::result<External_Resource_Status> import_external_database_coro(std::string resource_name, std::filesystem::path source_file);
[[nodiscard]] concurrencpp::result<External_Resource_Status> clear_external_database_table_coro(std::string resource_name);
[[nodiscard]] concurrencpp::result<std::optional<External_Database_Row>> query_external_database_coro(std::string resource_name, std::vector<std::string> primary_key_values) const;
[[nodiscard]] concurrencpp::result<std::shared_ptr<External_Database_Row_Map>> query_aircraft_external_databases_coro(std::string icao24) const;
[[nodiscard]] concurrencpp::result<std::shared_ptr<External_Database_Row_Map>> query_callsign_external_databases_coro(std::optional<std::string> callsign) const;
[[nodiscard]] concurrencpp::result<std::vector<External_Resource_Status>> external_database_status_coro() const;
[[nodiscard]] asio::awaitable<std::vector<External_Resource_Status>> refresh_external_databases_coro(bool force_download = true);
[[nodiscard]] asio::awaitable<External_Resource_Status> refresh_external_database_coro(std::string resource_name, bool force_download = true);
[[nodiscard]] asio::awaitable<External_Resource_Status> import_external_database_coro(std::string resource_name, std::filesystem::path source_file);
[[nodiscard]] asio::awaitable<External_Resource_Status> clear_external_database_table_coro(std::string resource_name);
[[nodiscard]] asio::awaitable<std::optional<External_Database_Row>> query_external_database_coro(std::string resource_name, std::vector<std::string> primary_key_values) const;
[[nodiscard]] asio::awaitable<std::shared_ptr<External_Database_Row_Map>> query_aircraft_external_databases_coro(std::string icao24) const;
[[nodiscard]] asio::awaitable<std::shared_ptr<External_Database_Row_Map>> query_callsign_external_databases_coro(std::optional<std::string> callsign) const;
[[nodiscard]] asio::awaitable<std::vector<External_Resource_Status>> external_database_status_coro() const;
void register_external_resource(std::unique_ptr<External_Resources> external_res);
void initialize(SQLite::Database& db, std::filesystem::path cache_pos);
std::vector<External_Resource_Status> sync_missing(SQLite::Database& db);