Rpc: support extended config for getConfirmedBlock (bp #15827) (#15832)

* Rpc: support extended config for getConfirmedBlock (#15827)

* Add rpc confirmed-block config wrapper to support struct of extended config

* Update docs

* Make config wrapper generic and use in getConfirmedTransaction as well

* Update/clean confirmed-tx docs

(cherry picked from commit 5b2da19c93)

# Conflicts:
#	core/src/rpc.rs

* Fix conflicts

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
Co-authored-by: Tyera Eulberg <tyera@solana.com>
This commit is contained in:
mergify[bot]
2021-03-13 00:02:26 +00:00
committed by GitHub
parent 16f8fcd711
commit 437f0bb8c6
3 changed files with 69 additions and 14 deletions

View File

@@ -739,9 +739,12 @@ impl JsonRpcRequestProcessor {
pub fn get_confirmed_block(
&self,
slot: Slot,
encoding: Option<UiTransactionEncoding>,
config: Option<RpcEncodingConfigWrapper<RpcConfirmedBlockConfig>>,
) -> Result<Option<EncodedConfirmedBlock>> {
let encoding = encoding.unwrap_or(UiTransactionEncoding::Json);
let config = config
.map(|config| config.convert_to_current())
.unwrap_or_default();
let encoding = config.encoding.unwrap_or(UiTransactionEncoding::Json);
if self.config.enable_rpc_transaction_history
&& slot
<= self
@@ -1007,9 +1010,12 @@ impl JsonRpcRequestProcessor {
pub fn get_confirmed_transaction(
&self,
signature: Signature,
encoding: Option<UiTransactionEncoding>,
config: Option<RpcEncodingConfigWrapper<RpcConfirmedTransactionConfig>>,
) -> Option<EncodedConfirmedTransaction> {
let encoding = encoding.unwrap_or(UiTransactionEncoding::Json);
let config = config
.map(|config| config.convert_to_current())
.unwrap_or_default();
let encoding = config.encoding.unwrap_or(UiTransactionEncoding::Json);
if self.config.enable_rpc_transaction_history {
match self
.blockstore
@@ -2022,7 +2028,7 @@ pub trait RpcSol {
&self,
meta: Self::Metadata,
slot: Slot,
encoding: Option<UiTransactionEncoding>,
config: Option<RpcEncodingConfigWrapper<RpcConfirmedBlockConfig>>,
) -> Result<Option<EncodedConfirmedBlock>>;
#[rpc(meta, name = "getBlockTime")]
@@ -2049,7 +2055,7 @@ pub trait RpcSol {
&self,
meta: Self::Metadata,
signature_str: String,
encoding: Option<UiTransactionEncoding>,
config: Option<RpcEncodingConfigWrapper<RpcConfirmedTransactionConfig>>,
) -> Result<Option<EncodedConfirmedTransaction>>;
#[rpc(meta, name = "getConfirmedSignaturesForAddress")]
@@ -2772,10 +2778,10 @@ impl RpcSol for RpcSolImpl {
&self,
meta: Self::Metadata,
slot: Slot,
encoding: Option<UiTransactionEncoding>,
config: Option<RpcEncodingConfigWrapper<RpcConfirmedBlockConfig>>,
) -> Result<Option<EncodedConfirmedBlock>> {
debug!("get_confirmed_block rpc request received: {:?}", slot);
meta.get_confirmed_block(slot, encoding)
meta.get_confirmed_block(slot, config)
}
fn get_confirmed_blocks(
@@ -2812,14 +2818,14 @@ impl RpcSol for RpcSolImpl {
&self,
meta: Self::Metadata,
signature_str: String,
encoding: Option<UiTransactionEncoding>,
config: Option<RpcEncodingConfigWrapper<RpcConfirmedTransactionConfig>>,
) -> Result<Option<EncodedConfirmedTransaction>> {
debug!(
"get_confirmed_transaction rpc request received: {:?}",
signature_str
);
let signature = verify_signature(&signature_str)?;
Ok(meta.get_confirmed_transaction(signature, encoding))
Ok(meta.get_confirmed_transaction(signature, config))
}
fn get_confirmed_signatures_for_address(