Mercurial > hg > bitcoin
changeset 3064:8691af55c386 draft
RPC: add 'getrawmempool', listing all transaction ids in memory pool
author | Jeff Garzik <jgarzik@exmulti.com> |
---|---|
date | Fri, 22 Jun 2012 11:43:34 -0400 |
parents | 090fe627dd7c |
children | d0225da3ddce |
files | src/bitcoinrpc.cpp src/main.cpp src/main.h |
diffstat | 3 files changed, 28 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -2194,6 +2194,23 @@ } } +Value getrawmempool(const Array& params, bool fHelp) +{ + if (fHelp || params.size() != 0) + throw runtime_error( + "getrawmempool\n" + "Returns all transaction ids in memory pool."); + + vector<uint256> vtxid; + mempool.queryHashes(vtxid); + + Array a; + BOOST_FOREACH(const uint256& hash, vtxid) + a.push_back(hash.ToString()); + + return a; +} + Value getblockhash(const Array& params, bool fHelp) { if (fHelp || params.size() != 1) @@ -2317,6 +2334,7 @@ { "sendfrom", &sendfrom, false }, { "sendmany", &sendmany, false }, { "addmultisigaddress", &addmultisigaddress, false }, + { "getrawmempool", &getrawmempool, true }, { "getblock", &getblock, false }, { "getblockhash", &getblockhash, false }, { "gettransaction", &gettransaction, false },
--- a/src/main.cpp +++ b/src/main.cpp @@ -652,7 +652,15 @@ return true; } - +void CTxMemPool::queryHashes(std::vector<uint256>& vtxid) +{ + vtxid.clear(); + + LOCK(cs); + vtxid.reserve(mapTx.size()); + for (map<uint256, CTransaction>::iterator mi = mapTx.begin(); mi != mapTx.end(); ++mi) + vtxid.push_back((*mi).first); +}