diff options
| author | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2024-01-03 09:12:22 +0100 |
|---|---|---|
| committer | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2024-01-03 09:12:22 +0100 |
| commit | 91e3cf85cd61e8339c38d6bb432f58f8da6de3df (patch) | |
| tree | 5cac81067a8ebd6cc6941db93752ef312ce19ad6 /libbridge/src | |
| parent | 04bf616722c45ba4176c5f1a0a1183034083c1d7 (diff) | |
move daemonBlockChainHeight to a separate thread
Diffstat (limited to 'libbridge/src')
| -rw-r--r-- | libbridge/src/main/cpp/wallet2_api_c.cpp | 31 | ||||
| -rw-r--r-- | libbridge/src/main/cpp/wallet2_api_c.h | 2 |
2 files changed, 33 insertions, 0 deletions
diff --git a/libbridge/src/main/cpp/wallet2_api_c.cpp b/libbridge/src/main/cpp/wallet2_api_c.cpp index e173526..83bb128 100644 --- a/libbridge/src/main/cpp/wallet2_api_c.cpp +++ b/libbridge/src/main/cpp/wallet2_api_c.cpp @@ -4,6 +4,7 @@ #include <unistd.h> #include "helpers.hpp" #include <cstring> +#include <thread> #ifdef __cplusplus extern "C" @@ -947,6 +948,36 @@ uint64_t MONERO_Wallet_daemonBlockChainHeight(void* wallet_ptr) { Monero::Wallet *wallet = reinterpret_cast<Monero::Wallet*>(wallet_ptr); return wallet->daemonBlockChainHeight(); } + +uint64_t daemonBlockChainHeight_cached = 0; + +uint64_t MONERO_Wallet_daemonBlockChainHeight_cached(void* wallet_ptr) { + return daemonBlockChainHeight_cached; +} + +uint64_t daemonBlockChainHeight_cahceSleepTime = 1; +bool daemonBlockChainHeight_cahceIsEnabled = false; + + +void MONERO_Wallet_daemonBlockChainHeight_runThread(void* wallet_ptr) { + while (true) { + Monero::Wallet *wallet = reinterpret_cast<Monero::Wallet*>(wallet_ptr); + daemonBlockChainHeight_cached = wallet->daemonBlockChainHeight(); + std::cout << "MONERO: TICK: MONERO_Wallet_daemonBlockChainHeight_runThread: " << daemonBlockChainHeight_cached << std::endl; + } +} +bool MONERO_Wallet_daemonBlockChainHeight_enableRefresh(void* wallet_ptr, int seconds) { + if (seconds < 1) { + seconds = 1; + } + daemonBlockChainHeight_cahceSleepTime = seconds; + if (daemonBlockChainHeight_cahceIsEnabled == true) { + return true; + } + daemonBlockChainHeight_cahceIsEnabled = true; + std::thread t1(MONERO_Wallet_daemonBlockChainHeight_runThread, wallet_ptr); + return true; +} uint64_t MONERO_Wallet_daemonBlockChainTargetHeight(void* wallet_ptr) { Monero::Wallet *wallet = reinterpret_cast<Monero::Wallet*>(wallet_ptr); return wallet->daemonBlockChainTargetHeight(); diff --git a/libbridge/src/main/cpp/wallet2_api_c.h b/libbridge/src/main/cpp/wallet2_api_c.h index 526d435..50c46e7 100644 --- a/libbridge/src/main/cpp/wallet2_api_c.h +++ b/libbridge/src/main/cpp/wallet2_api_c.h @@ -572,6 +572,8 @@ uint64_t MONERO_Wallet_approximateBlockChainHeight(void* wallet_ptr); uint64_t MONERO_Wallet_estimateBlockChainHeight(void* wallet_ptr); // virtual uint64_t daemonBlockChainHeight() const = 0; uint64_t MONERO_Wallet_daemonBlockChainHeight(void* wallet_ptr); +uint64_t MONERO_Wallet_daemonBlockChainHeight_cached(void* wallet_ptr); +bool MONERO_Wallet_daemonBlockChainHeight_enableRefresh(void* wallet_ptr, int seconds); // virtual uint64_t daemonBlockChainTargetHeight() const = 0; uint64_t MONERO_Wallet_daemonBlockChainTargetHeight(void* wallet_ptr); // virtual bool synchronized() const = 0; |
