mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 22:11:02 +00:00
committed by
Bastian Köcher
parent
c131a5e3c8
commit
f13211344b
@@ -847,11 +847,10 @@ impl_runtime_apis! {
|
|||||||
fn best_finalized() -> Option<(bp_rialto::BlockNumber, bp_rialto::Hash)> {
|
fn best_finalized() -> Option<(bp_rialto::BlockNumber, bp_rialto::Hash)> {
|
||||||
// the parachains finality pallet is never decoding parachain heads, so it is
|
// the parachains finality pallet is never decoding parachain heads, so it is
|
||||||
// only done in the integration code
|
// only done in the integration code
|
||||||
use bp_rialto_parachain::RIALTO_PARACHAIN_ID;
|
|
||||||
let encoded_head = pallet_bridge_parachains::Pallet::<
|
let encoded_head = pallet_bridge_parachains::Pallet::<
|
||||||
Runtime,
|
Runtime,
|
||||||
WithRialtoParachainsInstance,
|
WithRialtoParachainsInstance,
|
||||||
>::best_parachain_head(RIALTO_PARACHAIN_ID.into())?;
|
>::best_parachain_head(bp_rialto_parachain::RIALTO_PARACHAIN_ID.into())?;
|
||||||
let head = bp_rialto_parachain::Header::decode(&mut &encoded_head.0[..]).ok()?;
|
let head = bp_rialto_parachain::Header::decode(&mut &encoded_head.0[..]).ok()?;
|
||||||
Some((*head.number(), head.hash()))
|
Some((*head.number(), head.hash()))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -433,42 +433,30 @@ where
|
|||||||
ParaNumber: Copy + PartialOrd + Zero,
|
ParaNumber: Copy + PartialOrd + Zero,
|
||||||
RelayNumber: Copy + Debug + Ord,
|
RelayNumber: Copy + Debug + Ord,
|
||||||
{
|
{
|
||||||
// this switch is responsible for processing `RelayingRelayHeader` state
|
// Process the `RelayingRelayHeader` state.
|
||||||
match state {
|
if let &RelayState::RelayingRelayHeader(relay_header_number) = &state {
|
||||||
RelayState::Idle | RelayState::RelayingParaHeader(_) => (),
|
|
||||||
RelayState::RelayingRelayHeader(relay_header_number) => {
|
|
||||||
if data.relay_header_at_target < relay_header_number {
|
if data.relay_header_at_target < relay_header_number {
|
||||||
// required relay header hasn't yet been relayed
|
// The required relay header hasn't yet been relayed. Ask / wait for it.
|
||||||
return RelayState::RelayingRelayHeader(relay_header_number)
|
return state
|
||||||
}
|
}
|
||||||
|
|
||||||
// we may switch to `RelayingParaHeader` if parachain head is available
|
// We may switch to `RelayingParaHeader` if parachain head is available.
|
||||||
if let Some(para_header_at_relay_header_at_target) =
|
state = data
|
||||||
data.para_header_at_relay_header_at_target.clone()
|
.para_header_at_relay_header_at_target
|
||||||
{
|
.clone()
|
||||||
state = RelayState::RelayingParaHeader(para_header_at_relay_header_at_target);
|
.map_or(RelayState::Idle, RelayState::RelayingParaHeader);
|
||||||
} else {
|
|
||||||
// otherwise, we'd need to restart (this may happen only if parachain has been
|
|
||||||
// deregistered)
|
|
||||||
state = RelayState::Idle;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// this switch is responsible for processing `RelayingParaHeader` state
|
// Process the `RelayingParaHeader` state.
|
||||||
|
if let RelayState::RelayingParaHeader(para_header_id) = &state {
|
||||||
let para_header_at_target_or_zero = data.para_header_at_target.unwrap_or_else(Zero::zero);
|
let para_header_at_target_or_zero = data.para_header_at_target.unwrap_or_else(Zero::zero);
|
||||||
match state {
|
|
||||||
RelayState::Idle => (),
|
|
||||||
RelayState::RelayingRelayHeader(_) => unreachable!("processed by previous match; qed"),
|
|
||||||
RelayState::RelayingParaHeader(para_header_id) => {
|
|
||||||
if para_header_at_target_or_zero < para_header_id.0 {
|
if para_header_at_target_or_zero < para_header_id.0 {
|
||||||
// parachain header hasn't yet been relayed
|
// The required parachain header hasn't yet been relayed. Ask / wait for it.
|
||||||
return RelayState::RelayingParaHeader(para_header_id)
|
return state
|
||||||
}
|
}
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we haven't read para head from the source, we can't yet do anyhting
|
// if we haven't read para head from the source, we can't yet do anything
|
||||||
let para_header_at_source = match data.para_header_at_source {
|
let para_header_at_source = match data.para_header_at_source {
|
||||||
Some(ref para_header_at_source) => para_header_at_source.clone(),
|
Some(ref para_header_at_source) => para_header_at_source.clone(),
|
||||||
None => return RelayState::Idle,
|
None => return RelayState::Idle,
|
||||||
|
|||||||
Reference in New Issue
Block a user