diff options
author | Jeff Garzik <jgarzik@exmulti.com> | 2012-06-22 11:43:34 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2012-06-22 11:43:34 -0400 |
commit | 25d5c195228279b8fd891f2a7767d0529aee0ffd (patch) | |
tree | 2da60e657e3881bfa962258cc680bc14ffde9427 /src | |
parent | a08e1826981e02c7a5f18fc30b4f40a780e4e86d (diff) |
RPC: add 'getrawmempool', listing all transaction ids in memory pool
Diffstat (limited to 'src')
-rw-r--r-- | src/bitcoinrpc.cpp | 18 | ||||
-rw-r--r-- | src/main.cpp | 8 | ||||
-rw-r--r-- | src/main.h | 1 |
3 files changed, 27 insertions, 0 deletions
diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 8c3a615fd1..9dd6774984 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -2194,6 +2194,23 @@ Value getmemorypool(const Array& params, bool fHelp) } } +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 @@ static const CRPCCommand vRPCCommands[] = { "sendfrom", &sendfrom, false }, { "sendmany", &sendmany, false }, { "addmultisigaddress", &addmultisigaddress, false }, + { "getrawmempool", &getrawmempool, true }, { "getblock", &getblock, false }, { "getblockhash", &getblockhash, false }, { "gettransaction", &gettransaction, false }, diff --git a/src/main.cpp b/src/main.cpp index 2d3e35138c..6765ed5f05 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -652,7 +652,15 @@ bool CTxMemPool::remove(CTransaction &tx) 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); +} diff --git a/src/main.h b/src/main.h index 29c9a8bce3..bb094ad3c7 100644 --- a/src/main.h +++ b/src/main.h @@ -1604,6 +1604,7 @@ public: bool fCheckInputs, bool* pfMissingInputs); bool addUnchecked(CTransaction &tx); bool remove(CTransaction &tx); + void queryHashes(std::vector<uint256>& vtxid); unsigned long size() { |