Skip to content

Commit 01bb91e

Browse files
Implement addnode method and test
1 parent 1bb1f45 commit 01bb91e

File tree

15 files changed

+94
-13
lines changed

15 files changed

+94
-13
lines changed

client/src/client_sync/v17/mod.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ crate::impl_client_v17__prioritisetransaction!();
7171
crate::impl_client_v17__submitblock!();
7272

7373
// == Network ==
74+
crate::impl_client_v17__addnode!();
7475
crate::impl_client_v17__getaddednodeinfo!();
7576
crate::impl_client_v17__getnettotals!();
7677
crate::impl_client_v17__getnetworkinfo!();
@@ -214,3 +215,12 @@ pub struct WalletCreateFundedPsbtInput {
214215
txid: Txid,
215216
vout: u32,
216217
}
218+
219+
/// Args for the `addnode` method
220+
#[derive(Clone, Copy, Debug, Deserialize, Serialize)]
221+
#[serde(rename_all = "lowercase")]
222+
pub enum AddNodeCommand {
223+
Add,
224+
Remove,
225+
OneTry,
226+
}

client/src/client_sync/v17/network.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,22 @@
99
//!
1010
//! See, or use the `define_jsonrpc_minreq_client!` macro to define a `Client`.
1111
12+
/// Implements Bitcoin Core JSON-RPC API method `addnode`
13+
#[macro_export]
14+
macro_rules! impl_client_v17__addnode {
15+
() => {
16+
impl Client {
17+
pub fn add_node(&self, node: &str, command: AddNodeCommand) -> Result<()> {
18+
match self.call("addnode", &[into_json(node)?, into_json(command)?]) {
19+
Ok(serde_json::Value::Null) => Ok(()),
20+
Ok(res) => Err(Error::Returned(res.to_string())),
21+
Err(err) => Err(err.into()),
22+
}
23+
}
24+
}
25+
};
26+
}
27+
1228
/// Implements Bitcoin Core JSON-RPC API method `getaddednodeinfo`
1329
#[macro_export]
1430
macro_rules! impl_client_v17__getaddednodeinfo {

client/src/client_sync/v18/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ use crate::types::v18::*;
1919

2020
#[rustfmt::skip] // Keep public re-exports separate.
2121
pub use crate::client_sync::{
22-
v17::{AddressType, Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
22+
v17::{
23+
AddNodeCommand, AddressType, Input, Output, TemplateRequest, TemplateRules,
24+
WalletCreateFundedPsbtInput
25+
},
2326
};
2427

2528
// This publicly re-exports `Client`.
@@ -72,6 +75,7 @@ crate::impl_client_v17__prioritisetransaction!();
7275
crate::impl_client_v17__submitblock!();
7376

7477
// == Network ==
78+
crate::impl_client_v17__addnode!();
7579
crate::impl_client_v17__getaddednodeinfo!();
7680
crate::impl_client_v17__getnettotals!();
7781
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v19/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ use crate::types::v19::*;
1818

1919
#[rustfmt::skip] // Keep public re-exports separate.
2020
pub use crate::client_sync::{
21-
v17::{AddressType, Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
21+
v17::{
22+
AddNodeCommand, AddressType, Input, Output, TemplateRequest, TemplateRules,
23+
WalletCreateFundedPsbtInput
24+
},
2225
};
2326

2427
crate::define_jsonrpc_minreq_client!("v19");
@@ -70,6 +73,7 @@ crate::impl_client_v17__prioritisetransaction!();
7073
crate::impl_client_v17__submitblock!();
7174

7275
// == Network ==
76+
crate::impl_client_v17__addnode!();
7377
crate::impl_client_v17__getaddednodeinfo!();
7478
crate::impl_client_v17__getnettotals!();
7579
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v20.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use crate::types::v20::*;
1515

1616
#[rustfmt::skip] // Keep public re-exports separate.
1717
pub use crate::client_sync::{
18-
v17::{AddressType, Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
18+
v17::{AddressType, AddNodeCommand, Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
1919
};
2020

2121
crate::define_jsonrpc_minreq_client!("v20");
@@ -67,6 +67,7 @@ crate::impl_client_v17__prioritisetransaction!();
6767
crate::impl_client_v17__submitblock!();
6868

6969
// == Network ==
70+
crate::impl_client_v17__addnode!();
7071
crate::impl_client_v17__getaddednodeinfo!();
7172
crate::impl_client_v17__getnettotals!();
7273
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v21/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ use crate::types::v21::*;
1717

1818
#[rustfmt::skip] // Keep public re-exports separate.
1919
pub use crate::client_sync::{
20-
v17::{AddressType, Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
20+
v17::{
21+
AddNodeCommand, AddressType, Input, Output, TemplateRequest, TemplateRules,
22+
WalletCreateFundedPsbtInput
23+
},
2124
};
2225

2326
crate::define_jsonrpc_minreq_client!("v21");
@@ -69,6 +72,7 @@ crate::impl_client_v17__prioritisetransaction!();
6972
crate::impl_client_v17__submitblock!();
7073

7174
// == Network ==
75+
crate::impl_client_v17__addnode!();
7276
crate::impl_client_v17__getaddednodeinfo!();
7377
crate::impl_client_v17__getnettotals!();
7478
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v22/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ use crate::types::v22::*;
1717

1818
#[rustfmt::skip] // Keep public re-exports separate.
1919
pub use crate::client_sync::{
20-
v17::{AddressType, Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
20+
v17::{
21+
AddNodeCommand, AddressType, Input, Output, TemplateRequest, TemplateRules,
22+
WalletCreateFundedPsbtInput
23+
},
2124
};
2225

2326
crate::define_jsonrpc_minreq_client!("v22");
@@ -69,6 +72,7 @@ crate::impl_client_v17__prioritisetransaction!();
6972
crate::impl_client_v17__submitblock!();
7073

7174
// == Network ==
75+
crate::impl_client_v17__addnode!();
7276
crate::impl_client_v17__getaddednodeinfo!();
7377
crate::impl_client_v17__getnettotals!();
7478
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v23/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use crate::types::v23::*;
1919

2020
#[rustfmt::skip] // Keep public re-exports separate.
2121
pub use crate::client_sync::{
22-
v17::{Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
22+
v17::{AddNodeCommand, Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
2323
};
2424

2525
crate::define_jsonrpc_minreq_client!("v23");
@@ -71,6 +71,7 @@ crate::impl_client_v17__prioritisetransaction!();
7171
crate::impl_client_v17__submitblock!();
7272

7373
// == Network ==
74+
crate::impl_client_v17__addnode!();
7475
crate::impl_client_v17__getaddednodeinfo!();
7576
crate::impl_client_v17__getnettotals!();
7677
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v24.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use crate::types::v24::*;
1515

1616
#[rustfmt::skip] // Keep public re-exports separate.
1717
pub use crate::client_sync::{
18-
v17::{Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
18+
v17::{AddNodeCommand, Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
1919
v23::AddressType,
2020
};
2121

@@ -68,6 +68,7 @@ crate::impl_client_v17__prioritisetransaction!();
6868
crate::impl_client_v17__submitblock!();
6969

7070
// == Network ==
71+
crate::impl_client_v17__addnode!();
7172
crate::impl_client_v17__getaddednodeinfo!();
7273
crate::impl_client_v17__getnettotals!();
7374
crate::impl_client_v17__getnetworkinfo!();

client/src/client_sync/v25.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use crate::types::v25::*;
1515

1616
#[rustfmt::skip] // Keep public re-exports separate.
1717
pub use crate::client_sync::{
18-
v17::{Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
18+
v17::{AddNodeCommand, Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
1919
v23::AddressType,
2020
};
2121

@@ -68,6 +68,7 @@ crate::impl_client_v17__prioritisetransaction!();
6868
crate::impl_client_v17__submitblock!();
6969

7070
// == Network ==
71+
crate::impl_client_v17__addnode!();
7172
crate::impl_client_v17__getaddednodeinfo!();
7273
crate::impl_client_v17__getnettotals!();
7374
crate::impl_client_v17__getnetworkinfo!();

0 commit comments

Comments
 (0)