Add more docs for RpcClient (#19771)
* Add more docs for RpcClient * Use custom mocks in rpc_client examples * Move create_rpc_client_mocks into rpc_client module Signed-off-by: Brian Anderson <andersrb@gmail.com> * Update client/src/rpc_client.rs Co-authored-by: Tyera Eulberg <teulberg@gmail.com> * Update RpcClient docs per review feedback * Consistently link 'commitment level' in RpcClient docs Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
This commit is contained in:
parent
9d91a6f1b7
commit
082d5dc5b2
|
@ -7,20 +7,24 @@ use {
|
||||||
rpc_request::RpcRequest,
|
rpc_request::RpcRequest,
|
||||||
rpc_response::{
|
rpc_response::{
|
||||||
Response, RpcAccountBalance, RpcBlockProduction, RpcBlockProductionRange, RpcBlockhash,
|
Response, RpcAccountBalance, RpcBlockProduction, RpcBlockProductionRange, RpcBlockhash,
|
||||||
RpcConfirmedTransactionStatusWithSignature, RpcContactInfo, RpcFees, RpcPerfSample,
|
RpcConfirmedTransactionStatusWithSignature, RpcContactInfo, RpcFees, RpcIdentity,
|
||||||
RpcResponseContext, RpcSimulateTransactionResult, RpcSnapshotSlotInfo,
|
RpcInflationGovernor, RpcInflationRate, RpcInflationReward, RpcKeyedAccount,
|
||||||
|
RpcPerfSample, RpcResponseContext, RpcSimulateTransactionResult, RpcSnapshotSlotInfo,
|
||||||
RpcStakeActivation, RpcSupply, RpcVersionInfo, RpcVoteAccountInfo,
|
RpcStakeActivation, RpcSupply, RpcVersionInfo, RpcVoteAccountInfo,
|
||||||
RpcVoteAccountStatus, StakeActivationState,
|
RpcVoteAccountStatus, StakeActivationState,
|
||||||
},
|
},
|
||||||
rpc_sender::*,
|
rpc_sender::*,
|
||||||
},
|
},
|
||||||
serde_json::{json, Number, Value},
|
serde_json::{json, Number, Value},
|
||||||
|
solana_account_decoder::{UiAccount, UiAccountEncoding},
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
|
account::Account,
|
||||||
clock::{Slot, UnixTimestamp},
|
clock::{Slot, UnixTimestamp},
|
||||||
epoch_info::EpochInfo,
|
epoch_info::EpochInfo,
|
||||||
fee_calculator::{FeeCalculator, FeeRateGovernor},
|
fee_calculator::{FeeCalculator, FeeRateGovernor},
|
||||||
instruction::InstructionError,
|
instruction::InstructionError,
|
||||||
message::MessageHeader,
|
message::MessageHeader,
|
||||||
|
pubkey::Pubkey,
|
||||||
signature::Signature,
|
signature::Signature,
|
||||||
sysvar::epoch_schedule::EpochSchedule,
|
sysvar::epoch_schedule::EpochSchedule,
|
||||||
transaction::{self, Transaction, TransactionError},
|
transaction::{self, Transaction, TransactionError},
|
||||||
|
@ -32,7 +36,7 @@ use {
|
||||||
UiTransactionEncoding, UiTransactionStatusMeta,
|
UiTransactionEncoding, UiTransactionStatusMeta,
|
||||||
},
|
},
|
||||||
solana_version::Version,
|
solana_version::Version,
|
||||||
std::{collections::HashMap, net::SocketAddr, sync::RwLock},
|
std::{collections::HashMap, net::SocketAddr, str::FromStr, sync::RwLock},
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const PUBKEY: &str = "7RoSF9fUmdphVCpabEoefH81WwrW7orsWonXWqTXkKV8";
|
pub const PUBKEY: &str = "7RoSF9fUmdphVCpabEoefH81WwrW7orsWonXWqTXkKV8";
|
||||||
|
@ -398,6 +402,60 @@ impl RpcSender for MockSender {
|
||||||
num_slots: 123,
|
num_slots: 123,
|
||||||
sample_period_secs: 60,
|
sample_period_secs: 60,
|
||||||
}])?,
|
}])?,
|
||||||
|
"getIdentity" => serde_json::to_value(RpcIdentity {
|
||||||
|
identity: PUBKEY.to_string(),
|
||||||
|
})?,
|
||||||
|
"getInflationGovernor" => serde_json::to_value(
|
||||||
|
RpcInflationGovernor {
|
||||||
|
initial: 0.08,
|
||||||
|
terminal: 0.015,
|
||||||
|
taper: 0.15,
|
||||||
|
foundation: 0.05,
|
||||||
|
foundation_term: 7.0,
|
||||||
|
})?,
|
||||||
|
"getInflationRate" => serde_json::to_value(
|
||||||
|
RpcInflationRate {
|
||||||
|
total: 0.08,
|
||||||
|
validator: 0.076,
|
||||||
|
foundation: 0.004,
|
||||||
|
epoch: 0,
|
||||||
|
})?,
|
||||||
|
"getInflationReward" => serde_json::to_value(vec![
|
||||||
|
Some(RpcInflationReward {
|
||||||
|
epoch: 2,
|
||||||
|
effective_slot: 224,
|
||||||
|
amount: 2500,
|
||||||
|
post_balance: 499999442500,
|
||||||
|
commission: None,
|
||||||
|
})])?,
|
||||||
|
"minimumLedgerSlot" => json![123],
|
||||||
|
"getMaxRetransmitSlot" => json![123],
|
||||||
|
"getMultipleAccounts" => serde_json::to_value(Response {
|
||||||
|
context: RpcResponseContext { slot: 1 },
|
||||||
|
value: vec![Value::Null, Value::Null]
|
||||||
|
})?,
|
||||||
|
"getProgramAccounts" => {
|
||||||
|
let pubkey = Pubkey::from_str(&PUBKEY.to_string()).unwrap();
|
||||||
|
let account = Account {
|
||||||
|
lamports: 1_000_000,
|
||||||
|
data: vec![],
|
||||||
|
owner: pubkey,
|
||||||
|
executable: false,
|
||||||
|
rent_epoch: 0,
|
||||||
|
};
|
||||||
|
serde_json::to_value(vec![
|
||||||
|
RpcKeyedAccount {
|
||||||
|
pubkey: PUBKEY.to_string(),
|
||||||
|
account: UiAccount::encode(
|
||||||
|
&pubkey,
|
||||||
|
&account,
|
||||||
|
UiAccountEncoding::Base64,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
])?
|
||||||
|
},
|
||||||
_ => Value::Null,
|
_ => Value::Null,
|
||||||
};
|
};
|
||||||
Ok(val)
|
Ok(val)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue