Browse Source

RPC: add 'getrawmempool', listing all transaction ids in memory pool

metaverse
Jeff Garzik 12 years ago
committed by Jeff Garzik
parent
commit
25d5c19522
  1. 18
      src/bitcoinrpc.cpp
  2. 8
      src/main.cpp
  3. 1
      src/main.h

18
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 },

8
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);
}

1
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()
{

Loading…
Cancel
Save