From c62f719233523db90e1f5ff2e69a5d728353ee79 Mon Sep 17 00:00:00 2001 From: moneroexamples Date: Wed, 13 Mar 2019 16:24:59 +0800 Subject: [PATCH] get_num_outputs added --- src/CurrentBlockchainStatus.cpp | 23 +++++++++++++++++++++-- src/CurrentBlockchainStatus.h | 6 ++++++ src/OpenMoneroRequests.cpp | 1 - tests/mysql_tests.cpp | 2 ++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/CurrentBlockchainStatus.cpp b/src/CurrentBlockchainStatus.cpp index 3302e96..0745325 100755 --- a/src/CurrentBlockchainStatus.cpp +++ b/src/CurrentBlockchainStatus.cpp @@ -342,6 +342,19 @@ CurrentBlockchainStatus::get_tx_with_output( return true; } + +uint64_t +CurrentBlockchainStatus::get_num_outputs( + uint64_t amount) const +{ + auto future_result = thread_pool->submit( + [this](auto const& amount) -> uint64_t + { + return this->mcore->get_num_outputs(amount); + }, std::cref(amount)); + + return future_result.get(); +} bool CurrentBlockchainStatus::get_output_keys( @@ -360,9 +373,9 @@ CurrentBlockchainStatus::get_output_keys( absolute_offsets, outputs); return true; } - catch (std::exception const& e) + catch (...) { - OMERROR << "get_output_keys: " << e.what(); + OMERROR << "Can get_output_keys"; } return false; @@ -1318,6 +1331,12 @@ MicroCoreAdapter::MicroCoreAdapter(CurrentBlockchainStatus* _cbs) : cbs {_cbs} {} +uint64_t +MicroCoreAdapter::get_num_outputs(uint64_t amount) const +{ + return cbs->get_num_outputs(amount); +} + void MicroCoreAdapter::get_output_key(uint64_t amount, vector const& absolute_offsets, diff --git a/src/CurrentBlockchainStatus.h b/src/CurrentBlockchainStatus.h index a80b09b..93ddc3a 100755 --- a/src/CurrentBlockchainStatus.h +++ b/src/CurrentBlockchainStatus.h @@ -128,6 +128,9 @@ public: uint64_t amount, std::vector const& offsets, std::vector& indices) const; + + virtual uint64_t + get_num_outputs(uint64_t amount) const; virtual bool get_output_keys(const uint64_t& amount, @@ -377,6 +380,9 @@ class MicroCoreAdapter : public AbstractCore { public: MicroCoreAdapter(CurrentBlockchainStatus* _cbs); + + virtual uint64_t + get_num_outputs(uint64_t amount) const override; virtual void get_output_key(uint64_t amount, diff --git a/src/OpenMoneroRequests.cpp b/src/OpenMoneroRequests.cpp index 8a085c6..331b40e 100755 --- a/src/OpenMoneroRequests.cpp +++ b/src/OpenMoneroRequests.cpp @@ -2125,7 +2125,6 @@ OpenMoneroRequests::create_account( // if scan block height is zero (for extranl wallets) // blockchain scanning starts immedietly. scanned_block_height = start_height; - } // create new account diff --git a/tests/mysql_tests.cpp b/tests/mysql_tests.cpp index 1d01ee0..3e72798 100755 --- a/tests/mysql_tests.cpp +++ b/tests/mysql_tests.cpp @@ -307,6 +307,7 @@ TEST_F(MYSQL_TEST, InsertAndGetAccount) uint64_t mock_current_blockchain_height = 452145; uint64_t mock_current_blockchain_timestamp = 1529302789; + bool mock_generated_locally {true}; DateTime blk_timestamp_mysql_format = mysqlpp::DateTime(static_cast( @@ -326,6 +327,7 @@ TEST_F(MYSQL_TEST, InsertAndGetAccount) view_key_hash, mock_current_blockchain_height, /* for scanned_block_height */ blk_timestamp_mysql_format, + mock_generated_locally, mock_current_blockchain_height); int64_t acc_id = xmr_accounts->insert(new_account);