Skip to content

Commit 0fef9fd

Browse files
committed
Expose get*mempool* for v19+ clients
.. as it was previously only available in `v17` and `v18`.
1 parent 88fef4a commit 0fef9fd

File tree

25 files changed

+575
-132
lines changed

25 files changed

+575
-132
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// SPDX-License-Identifier: CC0-1.0
2+
3+
//! Macros for implementing JSON-RPC methods on a client.
4+
//!
5+
//! Specifically this is methods found under the `== Blockchain ==` section of the
6+
//! API docs of Bitcoin Core `v0.19`.
7+
//!
8+
//! All macros require `Client` to be in scope.
9+
//!
10+
//! See or use the `define_jsonrpc_minreq_client!` macro to define a `Client`.
11+
12+
/// Implements Bitcoin Core JSON-RPC API method `getmempoolancestors`
13+
#[macro_export]
14+
macro_rules! impl_client_v19__getmempoolancestors {
15+
() => {
16+
impl Client {
17+
pub fn get_mempool_ancestors(&self, txid: Txid) -> Result<GetMempoolAncestors> {
18+
// Equivalent to self.call("getmempoolancestors", &[into_json(txid)?, into_json(false)?])
19+
self.call("getmempoolancestors", &[into_json(txid)?])
20+
}
21+
22+
pub fn get_mempool_ancestors_verbose(
23+
&self,
24+
txid: Txid,
25+
) -> Result<GetMempoolAncestorsVerbose> {
26+
self.call("getmempoolancestors", &[into_json(txid)?, into_json(true)?])
27+
}
28+
}
29+
};
30+
}
31+
32+
/// Implements Bitcoin Core JSON-RPC API method `getmempooldescendants`
33+
#[macro_export]
34+
macro_rules! impl_client_v19__getmempooldescendants {
35+
() => {
36+
impl Client {
37+
pub fn get_mempool_descendants(&self, txid: Txid) -> Result<GetMempoolDescendants> {
38+
// Equivalent to self.call("getmempooldescendants", &[into_json(txid)?, into_json(false)?])
39+
self.call("getmempooldescendants", &[into_json(txid)?])
40+
}
41+
42+
pub fn get_mempool_descendants_verbose(
43+
&self,
44+
txid: Txid,
45+
) -> Result<GetMempoolDescendantsVerbose> {
46+
self.call("getmempooldescendants", &[into_json(txid)?, into_json(true)?])
47+
}
48+
}
49+
};
50+
}
51+
52+
/// Implements Bitcoin Core JSON-RPC API method `getmempoolentry`
53+
#[macro_export]
54+
macro_rules! impl_client_v19__getmempoolentry {
55+
() => {
56+
impl Client {
57+
pub fn get_mempool_entry(&self, txid: Txid) -> Result<GetMempoolEntry> {
58+
self.call("getmempoolentry", &[into_json(txid)?])
59+
}
60+
}
61+
};
62+
}

client/src/client_sync/v19/mod.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
//!
55
//! We ignore option arguments unless they effect the shape of the returned JSON data.
66
7-
mod wallet;
7+
pub mod blockchain;
8+
pub mod wallet;
89

910
use bitcoin::address::{Address, NetworkChecked};
1011
use bitcoin::{Amount, Block, BlockHash, Txid};
@@ -25,6 +26,11 @@ crate::impl_client_v17__getblockstats!();
2526
crate::impl_client_v17__getchaintips!();
2627
crate::impl_client_v17__getchaintxstats!();
2728
crate::impl_client_v17__getdifficulty!();
29+
crate::impl_client_v19__getmempoolancestors!();
30+
crate::impl_client_v19__getmempooldescendants!();
31+
crate::impl_client_v19__getmempoolentry!();
32+
crate::impl_client_v17__getmempoolinfo!();
33+
crate::impl_client_v17__getrawmempool!();
2834
crate::impl_client_v17__gettxout!();
2935

3036
// == Control ==

client/src/client_sync/v20.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ crate::impl_client_v17__getblockstats!();
2626
crate::impl_client_v17__getchaintips!();
2727
crate::impl_client_v17__getchaintxstats!();
2828
crate::impl_client_v17__getdifficulty!();
29+
crate::impl_client_v19__getmempoolancestors!();
30+
crate::impl_client_v19__getmempooldescendants!();
31+
crate::impl_client_v19__getmempoolentry!();
32+
crate::impl_client_v17__getmempoolinfo!();
33+
crate::impl_client_v17__getrawmempool!();
2934
crate::impl_client_v17__gettxout!();
3035

3136
// == Control ==

client/src/client_sync/v21.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ crate::impl_client_v17__getblockstats!();
2626
crate::impl_client_v17__getchaintips!();
2727
crate::impl_client_v17__getchaintxstats!();
2828
crate::impl_client_v17__getdifficulty!();
29+
crate::impl_client_v19__getmempoolancestors!();
30+
crate::impl_client_v19__getmempooldescendants!();
31+
crate::impl_client_v19__getmempoolentry!();
32+
crate::impl_client_v17__getmempoolinfo!();
33+
crate::impl_client_v17__getrawmempool!();
2934
crate::impl_client_v17__gettxout!();
3035

3136
// == Control ==

client/src/client_sync/v22/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ crate::impl_client_v17__getblockstats!();
2626
crate::impl_client_v17__getchaintips!();
2727
crate::impl_client_v17__getchaintxstats!();
2828
crate::impl_client_v17__getdifficulty!();
29+
crate::impl_client_v19__getmempoolancestors!();
30+
crate::impl_client_v19__getmempooldescendants!();
31+
crate::impl_client_v19__getmempoolentry!();
32+
crate::impl_client_v17__getmempoolinfo!();
33+
crate::impl_client_v17__getrawmempool!();
2934
crate::impl_client_v22__gettxout!();
3035

3136
// == Control ==

client/src/client_sync/v23.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ crate::impl_client_v17__getblockstats!();
2424
crate::impl_client_v17__getchaintips!();
2525
crate::impl_client_v17__getchaintxstats!();
2626
crate::impl_client_v17__getdifficulty!();
27+
crate::impl_client_v19__getmempoolancestors!();
28+
crate::impl_client_v19__getmempooldescendants!();
29+
crate::impl_client_v19__getmempoolentry!();
30+
crate::impl_client_v17__getmempoolinfo!();
31+
crate::impl_client_v17__getrawmempool!();
2732
crate::impl_client_v22__gettxout!();
2833

2934
// == Control ==

client/src/client_sync/v24.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ crate::impl_client_v17__getblockstats!();
2626
crate::impl_client_v17__getchaintips!();
2727
crate::impl_client_v17__getchaintxstats!();
2828
crate::impl_client_v17__getdifficulty!();
29+
crate::impl_client_v19__getmempoolancestors!();
30+
crate::impl_client_v19__getmempooldescendants!();
31+
crate::impl_client_v19__getmempoolentry!();
32+
crate::impl_client_v17__getmempoolinfo!();
33+
crate::impl_client_v17__getrawmempool!();
2934
crate::impl_client_v22__gettxout!();
3035

3136
// == Control ==

client/src/client_sync/v25.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ crate::impl_client_v17__getblockstats!();
2626
crate::impl_client_v17__getchaintips!();
2727
crate::impl_client_v17__getchaintxstats!();
2828
crate::impl_client_v17__getdifficulty!();
29+
crate::impl_client_v19__getmempoolancestors!();
30+
crate::impl_client_v19__getmempooldescendants!();
31+
crate::impl_client_v19__getmempoolentry!();
32+
crate::impl_client_v17__getmempoolinfo!();
33+
crate::impl_client_v17__getrawmempool!();
2934
crate::impl_client_v22__gettxout!();
3035

3136
// == Control ==

client/src/client_sync/v26.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ crate::impl_client_v17__getblockstats!();
2626
crate::impl_client_v17__getchaintips!();
2727
crate::impl_client_v17__getchaintxstats!();
2828
crate::impl_client_v17__getdifficulty!();
29+
crate::impl_client_v19__getmempoolancestors!();
30+
crate::impl_client_v19__getmempooldescendants!();
31+
crate::impl_client_v19__getmempoolentry!();
32+
crate::impl_client_v17__getmempoolinfo!();
33+
crate::impl_client_v17__getrawmempool!();
2934
crate::impl_client_v22__gettxout!();
3035

3136
// == Control ==

client/src/client_sync/v27.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ crate::impl_client_v17__getblockstats!();
2626
crate::impl_client_v17__getchaintips!();
2727
crate::impl_client_v17__getchaintxstats!();
2828
crate::impl_client_v17__getdifficulty!();
29+
crate::impl_client_v19__getmempoolancestors!();
30+
crate::impl_client_v19__getmempooldescendants!();
31+
crate::impl_client_v19__getmempoolentry!();
32+
crate::impl_client_v17__getmempoolinfo!();
33+
crate::impl_client_v17__getrawmempool!();
2934
crate::impl_client_v22__gettxout!();
3035

3136
// == Control ==

0 commit comments

Comments
 (0)