31 #ifndef LEDGER_CORE_WALLETPOOL_HPP 32 #define LEDGER_CORE_WALLETPOOL_HPP 35 #include <utils/Option.hpp> 36 #include <api/HttpClient.hpp> 37 #include <api/WebSocketClient.hpp> 38 #include <api/PathResolver.hpp> 39 #include <api/LogPrinter.hpp> 40 #include <api/ThreadDispatcher.hpp> 41 #include <api/RandomNumberGenerator.hpp> 42 #include <api/DatabaseBackend.hpp> 43 #include <api/WalletPoolCallback.hpp> 46 #include <unordered_map> 48 #include <net/HttpClient.hpp> 49 #include <async/DedicatedContext.hpp> 50 #include <preferences/Preferences.hpp> 51 #include <api/DynamicObject.hpp> 52 #include <database/DatabaseSessionPool.hpp> 53 #include <collections/DynamicObject.hpp> 54 #include <wallet/bitcoin/factories/BitcoinLikeWalletFactory.hpp> 55 #include <wallet/common/AbstractWalletFactory.hpp> 56 #include <events/EventPublisher.hpp> 57 #include <net/WebSocketClient.h> 58 #include <utils/TTLCache.h> 61 class BitcoinLikeWalletFactory;
65 std::shared_ptr<HttpClient> getHttpClient(
const std::string& baseUrl);
66 std::shared_ptr<WebSocketClient> getWebSocketClient()
const;
67 std::shared_ptr<Preferences> getExternalPreferences()
const;
68 std::shared_ptr<Preferences> getInternalPreferences()
const;
69 std::shared_ptr<api::PathResolver> getPathResolver()
const;
70 std::shared_ptr<api::RandomNumberGenerator> rng()
const;
71 std::shared_ptr<api::ThreadDispatcher> getDispatcher()
const;
72 std::shared_ptr<spdlog::logger>
logger()
const;
73 std::shared_ptr<DatabaseSessionPool> getDatabaseSessionPool()
const;
74 std::shared_ptr<DynamicObject> getConfiguration()
const;
75 std::shared_ptr<api::EventBus> getEventBus()
const;
76 const std::string& getName()
const;
77 const std::string getPassword()
const;
79 std::shared_ptr<AbstractWalletFactory> getFactory(
const std::string& currencyName)
const;
86 const std::shared_ptr<api::DynamicObject> &configuration);
91 const std::string& currencyName,
92 const std::shared_ptr<api::DynamicObject>& configuration);
103 const std::string& oldPassword,
104 const std::string& newPassword
109 const std::vector<api::Currency>& getCurrencies()
const;
111 Future<Unit> removeCurrency(
const std::string& currencyName);
112 static std::shared_ptr<WalletPool> newInstance(
113 const std::string &name,
114 const std::string &password,
115 const std::shared_ptr<api::HttpClient> &httpClient,
116 const std::shared_ptr<api::WebSocketClient> &webSocketClient,
117 const std::shared_ptr<api::PathResolver> &pathResolver,
118 const std::shared_ptr<api::LogPrinter> &logPrinter,
119 const std::shared_ptr<api::ThreadDispatcher> &dispatcher,
120 const std::shared_ptr<api::RandomNumberGenerator>& rng,
121 const std::shared_ptr<api::DatabaseBackend> &backend,
122 const std::shared_ptr<api::DynamicObject>& configuration
144 std::shared_ptr<api::ExecutionContext> getThreadPoolExecutionContext()
const;
147 const std::string &name,
148 const std::string &password,
149 const std::shared_ptr<api::HttpClient> &httpClient,
150 const std::shared_ptr<api::WebSocketClient> &webSocketClient,
151 const std::shared_ptr<api::PathResolver> &pathResolver,
152 const std::shared_ptr<api::LogPrinter> &logPrinter,
153 const std::shared_ptr<api::ThreadDispatcher> &dispatcher,
154 const std::shared_ptr<api::RandomNumberGenerator>& rng,
155 const std::shared_ptr<api::DatabaseBackend> &backend,
156 const std::shared_ptr<api::DynamicObject>& configuration
159 void initializeCurrencies();
163 void initializeFactories();
167 const std::string &name);
170 std::string _poolName;
171 std::string _password;
172 std::shared_ptr<DynamicObject> _configuration;
175 std::shared_ptr<api::PathResolver> _pathResolver;
178 std::shared_ptr<api::HttpClient> _httpEngine;
179 std::unordered_map<std::string, std::weak_ptr<HttpClient>> _httpClients;
182 std::shared_ptr<WebSocketClient> _wsClient;
185 std::shared_ptr<PreferencesBackend> _externalPreferencesBackend;
186 std::shared_ptr<PreferencesBackend> _internalPreferencesBackend;
189 std::shared_ptr<DatabaseSessionPool> _database;
192 std::shared_ptr<spdlog::logger> _logger;
193 std::shared_ptr<api::LogPrinter> _logPrinter;
196 std::shared_ptr<api::ThreadDispatcher> _threadDispatcher;
199 std::shared_ptr<api::RandomNumberGenerator> _rng;
202 std::vector<api::Currency> _currencies;
205 std::shared_ptr<EventPublisher> _publisher;
208 std::vector<std::shared_ptr<AbstractWalletFactory>> _factories;
211 std::unordered_map<std::string, std::shared_ptr<AbstractWallet>> _wallets;
214 std::mutex _eventFilterMutex;
215 std::unordered_map<std::string, int64_t> _lastEmittedBlocks;
217 std::shared_ptr<api::ExecutionContext> _threadPoolExecutionContext;
224 #endif //LEDGER_CORE_WALLETPOOL_HPP Future< api::ErrorCode > freshResetAll()
Definition: WalletPool.cpp:551
Definition: Option.hpp:49
Definition: Deffered.hpp:49
Definition: WalletPool.hpp:63
Definition: WalletDatabaseEntry.hpp:39
Definition: Currency.hpp:23
Definition: Account.cpp:8
Definition: DedicatedContext.hpp:39
Definition: TTLCache.h:45
Definition: logger.hpp:44