aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_core/tx_pool.cpp
diff options
context:
space:
mode:
authorwarptangent <warptangent@inbox.com>2015-04-23 05:13:07 -0700
committerwarptangent <warptangent@inbox.com>2015-04-23 07:04:36 -0700
commitb76857f9d9a8bf45b854e9c3da56b550ade1a7c6 (patch)
treeaead9c8412218045e3de48fe4b98a2bcc0393b67 /src/cryptonote_core/tx_pool.cpp
parentupdate lmdb64 (diff)
downloadmonero-b76857f9d9a8bf45b854e9c3da56b550ade1a7c6.tar.xz
Add mempool output to daemon via command and RPC
This is for the "print_pool" command and "get_transaction_pool" RPC method. Add mempool's spent key images to the results.
Diffstat (limited to 'src/cryptonote_core/tx_pool.cpp')
-rw-r--r--src/cryptonote_core/tx_pool.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/cryptonote_core/tx_pool.cpp b/src/cryptonote_core/tx_pool.cpp
index 03ced2c2e..7c8a61999 100644
--- a/src/cryptonote_core/tx_pool.cpp
+++ b/src/cryptonote_core/tx_pool.cpp
@@ -276,6 +276,40 @@ namespace cryptonote
BOOST_FOREACH(const auto& tx_vt, m_transactions)
txs.push_back(tx_vt.second.tx);
}
+ //------------------------------------------------------------------
+ bool tx_memory_pool::get_transactions_and_spent_keys_info(std::vector<tx_info>& tx_infos, std::vector<spent_key_image_info>& key_image_infos) const
+ {
+ CRITICAL_REGION_LOCAL(m_transactions_lock);
+ for (const auto& tx_vt : m_transactions)
+ {
+ tx_info txi;
+ const tx_details& txd = tx_vt.second;
+ txi.id_hash = epee::string_tools::pod_to_hex(tx_vt.first);
+ txi.tx_json = obj_to_json_str(*const_cast<transaction*>(&txd.tx));
+ txi.blob_size = txd.blob_size;
+ txi.fee = txd.fee;
+ txi.kept_by_block = txd.kept_by_block;
+ txi.max_used_block_height = txd.max_used_block_height;
+ txi.max_used_block_id_hash = epee::string_tools::pod_to_hex(txd.max_used_block_id);
+ txi.last_failed_height = txd.last_failed_height;
+ txi.last_failed_id_hash = epee::string_tools::pod_to_hex(txd.last_failed_id);
+ txi.receive_time = txd.receive_time;
+ tx_infos.push_back(txi);
+ }
+
+ for (const key_images_container::value_type& kee : m_spent_key_images) {
+ const crypto::key_image& k_image = kee.first;
+ const std::unordered_set<crypto::hash>& kei_image_set = kee.second;
+ spent_key_image_info ki;
+ ki.id_hash = epee::string_tools::pod_to_hex(k_image);
+ for (const crypto::hash& tx_id_hash : kei_image_set)
+ {
+ ki.txs_hashes.push_back(epee::string_tools::pod_to_hex(tx_id_hash));
+ }
+ key_image_infos.push_back(ki);
+ }
+ return true;
+ }
//---------------------------------------------------------------------------------
bool tx_memory_pool::get_transaction(const crypto::hash& id, transaction& tx) const
{