pub struct SessionReport<AccountId> {
pub end_index: SessionIndex,
pub validator_points: Vec<(AccountId, u32)>,
pub activation_timestamp: Option<(u64, u32)>,
pub leftover: bool,
}Expand description
The information that is sent from RC -> AH on session end.
Fields§
§end_index: SessionIndexThe session that is ending.
This always implies start of end_index + 1, and planning of end_index + 2.
validator_points: Vec<(AccountId, u32)>All of the points that validators have accumulated.
This can be either from block authoring, or from parachain consensus, or anything else.
activation_timestamp: Option<(u64, u32)>If none, it means no new validator set was activated as a part of this session.
If Some((timestamp, id)), it means that the new validator set was activated at the given
timestamp, and the id of the validator set is id.
This id is what was previously communicated to the RC as a part of
ValidatorSetReport::id.
leftover: boolIf this session report is self-contained, then it is false.
If this session report has some leftover, it should not be acted upon until a subsequent
message with leftover = true comes in. The client pallets should handle this queuing.
This is in place to future proof us against possibly needing to send multiple rounds of
messages to convey all of the validator_points.
Upon processing, this should always be true, and it should be ignored.
Implementations§
Source§impl<AccountId> SessionReport<AccountId>
impl<AccountId> SessionReport<AccountId>
Sourcepub fn new_terminal(
end_index: SessionIndex,
validator_points: Vec<(AccountId, u32)>,
activation_timestamp: Option<(u64, u32)>,
) -> Self
pub fn new_terminal( end_index: SessionIndex, validator_points: Vec<(AccountId, u32)>, activation_timestamp: Option<(u64, u32)>, ) -> Self
A new instance of self that is terminal. This is useful when we want to send everything in one go.
Sourcepub fn merge(self, other: Self) -> Result<Self, UnexpectedKind>
pub fn merge(self, other: Self) -> Result<Self, UnexpectedKind>
Merge oneself with another instance.
Trait Implementations§
Source§impl<AccountId: Clone> Clone for SessionReport<AccountId>
impl<AccountId: Clone> Clone for SessionReport<AccountId>
Source§fn clone(&self) -> SessionReport<AccountId>
fn clone(&self) -> SessionReport<AccountId>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<AccountId: Debug> Debug for SessionReport<AccountId>
impl<AccountId: Debug> Debug for SessionReport<AccountId>
Source§impl<AccountId> Decode for SessionReport<AccountId>
impl<AccountId> Decode for SessionReport<AccountId>
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>
Source§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,
Source§impl<AccountId> Display for SessionReport<AccountId>
impl<AccountId> Display for SessionReport<AccountId>
Source§impl<AccountId> Encode for SessionReport<AccountId>
impl<AccountId> Encode for SessionReport<AccountId>
Source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
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, )
Source§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
Source§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Source§impl<AccountId> MaxEncodedLen for SessionReport<AccountId>
impl<AccountId> MaxEncodedLen for SessionReport<AccountId>
Source§fn max_encoded_len() -> usize
fn max_encoded_len() -> usize
Source§impl<AccountId: PartialEq> PartialEq for SessionReport<AccountId>
impl<AccountId: PartialEq> PartialEq for SessionReport<AccountId>
Source§impl<AccountId: Clone> SplittableMessage for SessionReport<AccountId>
impl<AccountId: Clone> SplittableMessage for SessionReport<AccountId>
Source§impl<AccountId> TypeInfo for SessionReport<AccountId>
impl<AccountId> TypeInfo for SessionReport<AccountId>
impl<AccountId> DecodeWithMemTracking for SessionReport<AccountId>
impl<AccountId> EncodeLike for SessionReport<AccountId>
impl<AccountId> StructuralPartialEq for SessionReport<AccountId>
Auto Trait Implementations§
impl<AccountId> Freeze for SessionReport<AccountId>
impl<AccountId> RefUnwindSafe for SessionReport<AccountId>where
AccountId: RefUnwindSafe,
impl<AccountId> Send for SessionReport<AccountId>where
AccountId: Send,
impl<AccountId> Sync for SessionReport<AccountId>where
AccountId: Sync,
impl<AccountId> Unpin for SessionReport<AccountId>where
AccountId: Unpin,
impl<AccountId> UnwindSafe for SessionReport<AccountId>where
AccountId: UnwindSafe,
Blanket Implementations§
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
Source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
Source§impl<T> DecodeWithMemLimit for Twhere
T: DecodeWithMemTracking,
impl<T> DecodeWithMemLimit for Twhere
T: DecodeWithMemTracking,
Source§impl<T, U> DefensiveTruncateInto<U> for Twhere
U: DefensiveTruncateFrom<T>,
impl<T, U> DefensiveTruncateInto<U> for Twhere
U: DefensiveTruncateFrom<T>,
Source§fn defensive_truncate_into(self) -> U
fn defensive_truncate_into(self) -> U
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>
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>
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 moreSource§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
Source§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
Source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
Source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
Source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T. Read moreSource§impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
type Error = <U as TryFromKey<T>>::Error
fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>
Source§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
Source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from.Source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
Source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T.