From f092175e09691050c29ad84e6518dd531b52c049 Mon Sep 17 00:00:00 2001 From: woodser Date: Tue, 28 May 2019 16:23:49 -0400 Subject: [PATCH] defined Wallet2ListenerAdapter --- src/wallet/MoneroWallet.cpp | 25 ++++++++++++++++++++++++- src/wallet/MoneroWallet.h | 3 ++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/wallet/MoneroWallet.cpp b/src/wallet/MoneroWallet.cpp index 62837ea..ee258dd 100644 --- a/src/wallet/MoneroWallet.cpp +++ b/src/wallet/MoneroWallet.cpp @@ -128,9 +128,32 @@ uint64_t MoneroWallet::getRestoreHeight() const { return wallet2->get_refresh_from_block_height(); } +/** + * Adapts wallet2 notifications to a public listener. + */ +struct Wallet2ListenerAdapter : public tools::i_wallet2_callback { + + Wallet2ListenerAdapter(MoneroWalletListener* listener) { + this->listener = listener; + } + + ~Wallet2ListenerAdapter() { + + } + + virtual void on_new_block(uint64_t height, const cryptonote::block& block) { + cout << "Wallet2ListenerAdapter.on_new_block()" << endl; + throw runtime_error("Not implemented"); + } + + MoneroWalletListener* listener; +}; + void MoneroWallet::setListener(MoneroWalletListener* listener) { cout << "setListener()" << endl; - throw runtime_error("Not implemented"); + this->listener = listener; + if (!listener) wallet2->callback(nullptr); + else wallet2->callback(new Wallet2ListenerAdapter(listener)); // TODO: is this memory leak when adapter is re-set? } MoneroSyncResult MoneroWallet::sync() { diff --git a/src/wallet/MoneroWallet.h b/src/wallet/MoneroWallet.h index 25271e1..3579efc 100644 --- a/src/wallet/MoneroWallet.h +++ b/src/wallet/MoneroWallet.h @@ -251,6 +251,7 @@ namespace monero { // --------------------------------- PRIVATE -------------------------------- private: - tools::wallet2* wallet2; // internal wallet implementation + tools::wallet2* wallet2; // internal wallet implementation + MoneroWalletListener* listener; // wallet's assigned listener }; }