aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@exmulti.com>2012-06-22 11:43:34 -0400
committerJeff Garzik <jgarzik@redhat.com>2012-06-22 11:43:34 -0400
commit25d5c195228279b8fd891f2a7767d0529aee0ffd (patch)
tree2da60e657e3881bfa962258cc680bc14ffde9427 /src
parenta08e1826981e02c7a5f18fc30b4f40a780e4e86d (diff)
RPC: add 'getrawmempool', listing all transaction ids in memory pool
Diffstat (limited to 'src')
-rw-r--r--src/bitcoinrpc.cpp18
-rw-r--r--src/main.cpp8
-rw-r--r--src/main.h1
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()
{