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,

source§

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)

Performs copy-assignment from source. Read more
source§

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§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
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,

source§

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,

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,

Attempt to skip the encoded value from input. Read more
§

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,

source§

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 )

Convert self to a slice and append it to the destination.
§

fn encode(&self) -> Vec<u8>

Convert self to an owned vector.
§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Convert self to a slice and then invoke the given closure with it.
§

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,

source§

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,

source§

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>,

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,

Retrieves next message from the network.

§Cancel safety

This method is cancellation safe.

§

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>

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>

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>

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.
source§

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>

§

impl<B, J> Send for NetworkData<B, J>

§

impl<B, J> Sync for NetworkData<B, J>

§

impl<B, J> Unpin for NetworkData<B, J>

§

impl<B, J> UnwindSafe for NetworkData<B, J>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Any for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

§

fn type_name(&self) -> &'static str

§

impl<T> AnySync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CheckedConversion for T

§

fn checked_from<T>(t: T) -> Option<Self>
where Self: TryFrom<T>,

Convert from a value of T into an equivalent instance of Option<Self>. Read more
§

fn checked_into<T>(self) -> Option<T>
where Self: TryInto<T>,

Consume self to return Some equivalent value of Option<T>. Read more
§

impl<T> DecodeAll for T
where T: Decode,

§

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 T
where T: Decode,

§

fn decode_all_with_depth_limit( limit: u32, input: &mut &[u8] ) -> Result<T, Error>

Decode Self and consume all of the given input data. Read more
§

fn decode_with_depth_limit<I>(limit: u32, input: &mut I) -> Result<T, Error>
where I: Input,

Decode Self with the given maximum recursion depth and advance input by the number of bytes consumed. Read more
source§

impl<T> DynClone for T
where T: Clone,

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Hashable for T
where T: Codec,

§

fn blake2_128(&self) -> [u8; 16]

§

fn blake2_256(&self) -> [u8; 32]

§

fn blake2_128_concat(&self) -> Vec<u8>

§

fn twox_128(&self) -> [u8; 16]

§

fn twox_256(&self) -> [u8; 32]

§

fn twox_64_concat(&self) -> Vec<u8>

§

fn identity(&self) -> Vec<u8>

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

§

fn from_ref(t: &T) -> &T

Cast reference.
§

fn into_ref(&self) -> &T

Cast reference.
§

fn from_mut(t: &mut T) -> &mut T

Cast mutable reference.
§

fn into_mut(&mut self) -> &mut T

Cast mutable reference.
§

impl<T, Outer> IsWrappedBy<Outer> for T
where Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,

§

fn from_ref(outer: &Outer) -> &T

Get a reference to the inner from the outer.

§

fn from_mut(outer: &mut Outer) -> &mut T

Get a mutable reference to the inner from the outer.

§

impl<T> KeyedVec for T
where T: Codec,

§

fn to_keyed_vec(&self, prepend_key: &[u8]) -> Vec<u8>

Return an encoding of Self prepended by given slice.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T> SaturatedConversion for T

§

fn saturated_from<T>(t: T) -> Self
where Self: UniqueSaturatedFrom<T>,

Convert from a value of T into an equivalent instance of Self. Read more
§

fn saturated_into<T>(self) -> T
where Self: UniqueSaturatedInto<T>,

Consume self to return an equivalent value of T. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<S, T> UncheckedInto<T> for S
where T: UncheckedFrom<S>,

§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
§

impl<T, S> UniqueSaturatedInto<T> for S
where T: Bounded, S: TryInto<T>,

§

fn unique_saturated_into(self) -> T

Consume self to return an equivalent value of T.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
§

impl<S> Codec for S
where S: Decode + Encode,

source§

impl<D> Data for D
where D: Clone + Codec + Send + Sync + 'static,

source§

impl<D> Data for D
where D: Clone + Codec + Send + Sync + 'static,

§

impl<T> EncodeLike<&&T> for T
where T: Encode,

§

impl<T> EncodeLike<&T> for T
where T: Encode,

§

impl<T> EncodeLike<&mut T> for T
where T: Encode,

§

impl<T> EncodeLike<Arc<T>> for T
where T: Encode,

§

impl<T> EncodeLike<Box<T>> for T
where T: Encode,

§

impl<'a, T> EncodeLike<Cow<'a, T>> for T
where T: ToOwned + Encode,

§

impl<T> EncodeLike<Rc<T>> for T
where T: Encode,

§

impl<S> FullCodec for S
where S: Decode + FullEncode,

§

impl<S> FullEncode for S
where S: Encode + EncodeLike,

§

impl<T> JsonSchemaMaybe for T

§

impl<T> MaybeDebug for T
where T: Debug,

§

impl<T> MaybeDebug for T
where T: Debug,

§

impl<T> MaybeRefUnwindSafe for T
where T: RefUnwindSafe,

§

impl<T> MaybeSend for T
where T: Send,