Enum phron_finality::sync::data::NetworkData
source · pub enum NetworkData<B, J>where
J: Justification,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Block,{
StateBroadcast(State<J>),
StateBroadcastResponse(J::Unverified, Option<J::Unverified>),
Request(Request<J>),
RequestResponse(Vec<ResponseItem<B, J>>),
ChainExtensionRequest(State<J>),
}
Expand description
Data to be sent over the network, current version.
Variants§
StateBroadcast(State<J>)
A periodic state broadcast, so that neighbouring nodes can request what they are missing, send what we are missing, and sometimes just use the justifications to update their own state.
StateBroadcastResponse(J::Unverified, Option<J::Unverified>)
Response to a state broadcast. Contains at most two justifications that the peer will understand.
Request(Request<J>)
An explicit request for data, potentially a lot of it.
RequestResponse(Vec<ResponseItem<B, J>>)
Response to the request for data.
ChainExtensionRequest(State<J>)
A request for a chain extension.
Trait Implementations§
source§impl<B, J> Clone for NetworkData<B, J>where
J: Justification + Clone,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Clone + Block,
J::Unverified: Clone,
impl<B, J> Clone for NetworkData<B, J>where
J: Justification + Clone,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Clone + Block,
J::Unverified: Clone,
source§fn clone(&self) -> NetworkData<B, J>
fn clone(&self) -> NetworkData<B, J>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<B, J> Debug for NetworkData<B, J>where
J: Justification + Debug,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Debug + Block,
J::Unverified: Debug,
impl<B, J> Debug for NetworkData<B, J>where
J: Justification + Debug,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Debug + Block,
J::Unverified: Debug,
source§impl<B, J> Decode for NetworkData<B, J>where
J: Justification,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Block,
State<J>: Decode,
J::Unverified: Decode,
Option<J::Unverified>: Decode,
Request<J>: Decode,
Vec<ResponseItem<B, J>>: Decode,
impl<B, J> Decode for NetworkData<B, J>where
J: Justification,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Block,
State<J>: Decode,
J::Unverified: Decode,
Option<J::Unverified>: Decode,
Request<J>: Decode,
Vec<ResponseItem<B, J>>: Decode,
source§fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy ) -> Result<Self, Error>
Attempt to deserialise the value from input.
§fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>
) -> Result<DecodeFinished, Error>where
I: Input,
fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>
) -> Result<DecodeFinished, Error>where
I: Input,
Attempt to deserialize the value from input into a pre-allocated piece of memory. Read more
§fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
Attempt to skip the encoded value from input. Read more
§fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
Returns the fixed encoded size of the type. Read more
source§impl<B, J> Encode for NetworkData<B, J>where
J: Justification,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Block,
State<J>: Encode,
J::Unverified: Encode,
Option<J::Unverified>: Encode,
Request<J>: Encode,
Vec<ResponseItem<B, J>>: Encode,
impl<B, J> Encode for NetworkData<B, J>where
J: Justification,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Block,
State<J>: Encode,
J::Unverified: Encode,
Option<J::Unverified>: Encode,
Request<J>: Encode,
Vec<ResponseItem<B, J>>: Encode,
source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
If possible give a hint of expected size of the encoding. Read more
source§fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy )
Convert self to a slice and append it to the destination.
§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
Convert self to a slice and then invoke the given closure with it.
§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Calculates the encoded size. Read more
source§impl<B, J> From<NetworkData<B, J>> for NetworkDataV2<B, J>where
J: Justification,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Block,
impl<B, J> From<NetworkData<B, J>> for NetworkDataV2<B, J>where
J: Justification,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Block,
source§fn from(data: NetworkData<B, J>) -> Self
fn from(data: NetworkData<B, J>) -> Self
Converts to this type from the input type.
source§impl<B, J> From<NetworkDataV2<B, J>> for NetworkData<B, J>where
J: Justification,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Block,
impl<B, J> From<NetworkDataV2<B, J>> for NetworkData<B, J>where
J: Justification,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Block,
source§fn from(data: NetworkDataV2<B, J>) -> Self
fn from(data: NetworkDataV2<B, J>) -> Self
Converts to this type from the input type.
source§impl<B, J, N> Network<NetworkData<B, J>> for VersionWrapper<B, J, N>where
N: GossipNetwork<VersionedNetworkData<B, J>>,
J: Justification,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified>,
impl<B, J, N> Network<NetworkData<B, J>> for VersionWrapper<B, J, N>where
N: GossipNetwork<VersionedNetworkData<B, J>>,
J: Justification,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified>,
source§fn next<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<(NetworkData<B, J>, Self::PeerId), Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn next<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<(NetworkData<B, J>, Self::PeerId), Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
type Error = <N as Network<VersionedNetworkData<B, J>>>::Error
type PeerId = <N as Network<VersionedNetworkData<B, J>>>::PeerId
source§fn send_to(
&mut self,
data: NetworkData<B, J>,
peer_id: Self::PeerId
) -> Result<(), Self::Error>
fn send_to( &mut self, data: NetworkData<B, J>, peer_id: Self::PeerId ) -> Result<(), Self::Error>
Attempt to send data to a peer. Might silently fail if we are not connected to them.
source§fn send_to_random(
&mut self,
data: NetworkData<B, J>,
peer_ids: HashSet<Self::PeerId>
) -> Result<(), Self::Error>
fn send_to_random( &mut self, data: NetworkData<B, J>, peer_ids: HashSet<Self::PeerId> ) -> Result<(), Self::Error>
Send data to a random peer, preferably from a list. It should send the data to a randomly
chosen peer from the provided list, but if it cannot (e.g. because it’s not connected) it
will send to a random available peer. No guarantees any peer gets it even if no errors are
returned, retry appropriately.
source§fn broadcast(&mut self, data: NetworkData<B, J>) -> Result<(), Self::Error>
fn broadcast(&mut self, data: NetworkData<B, J>) -> Result<(), Self::Error>
Broadcast data to all directly connected peers. Network-wide broadcasts have to be
implemented on top of this abstraction. Note that there might be no currently connected
peers, so there are no guarantees any single call sends anything even if no errors are
returned, retry appropriately.
impl<B, J> EncodeLike for NetworkData<B, J>where
J: Justification,
B: Block<UnverifiedHeader = <<J as Justification>::Header as Header>::Unverified> + Block,
State<J>: Encode,
J::Unverified: Encode,
Option<J::Unverified>: Encode,
Request<J>: Encode,
Vec<ResponseItem<B, J>>: Encode,
Auto Trait Implementations§
impl<B, J> RefUnwindSafe for NetworkData<B, J>where
B: RefUnwindSafe,
<J as Justification>::Unverified: RefUnwindSafe,
<<J as Justification>::Header as Header>::Unverified: RefUnwindSafe,
impl<B, J> Send for NetworkData<B, J>
impl<B, J> Sync for NetworkData<B, J>
impl<B, J> Unpin for NetworkData<B, J>where
B: Unpin,
<J as Justification>::Unverified: Unpin,
<<J as Justification>::Header as Header>::Unverified: Unpin,
impl<B, J> UnwindSafe for NetworkData<B, J>where
B: UnwindSafe,
<J as Justification>::Unverified: UnwindSafe,
<<J as Justification>::Header as Header>::Unverified: UnwindSafe,
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
§impl<T> DecodeAll for Twhere
T: Decode,
impl<T> DecodeAll for Twhere
T: Decode,
§fn decode_all(input: &mut &[u8]) -> Result<T, Error>
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
Decode
Self
and consume all of the given input data. Read more§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
§impl<T> Hashable for Twhere
T: Codec,
impl<T> Hashable for Twhere
T: Codec,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere
T: Codec,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T
. Read more§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.