casper-node 2.0.3

The Casper blockchain node
Documentation
use std::{
    fmt::{self, Display, Formatter},
    sync::Arc,
};

use derive_more::From;

use casper_types::{BlockHash, BlockSignaturesV2, BlockV2, EraId, FinalitySignatureV2};

use crate::{
    effect::requests::BlockAccumulatorRequest,
    types::{ForwardMetaBlock, NodeId},
};

#[derive(Debug, From)]
pub(crate) enum Event {
    #[from]
    Request(BlockAccumulatorRequest),
    RegisterPeer {
        block_hash: BlockHash,
        era_id: Option<EraId>,
        sender: NodeId,
    },
    ReceivedBlock {
        block: Arc<BlockV2>,
        sender: NodeId,
    },
    CreatedFinalitySignature {
        finality_signature: Box<FinalitySignatureV2>,
    },
    ReceivedFinalitySignature {
        finality_signature: Box<FinalitySignatureV2>,
        sender: NodeId,
    },
    ExecutedBlock {
        meta_block: ForwardMetaBlock,
    },
    Stored {
        maybe_meta_block: Option<ForwardMetaBlock>,
        maybe_block_signatures: Option<BlockSignaturesV2>,
    },
}

impl Display for Event {
    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
        match self {
            Event::Request(BlockAccumulatorRequest::GetPeersForBlock { block_hash, .. }) => {
                write!(
                    f,
                    "block accumulator peers request for block: {}",
                    block_hash
                )
            }
            Event::RegisterPeer {
                block_hash, sender, ..
            } => {
                write!(
                    f,
                    "registering peer {} after gossip: {}",
                    sender, block_hash
                )
            }
            Event::ReceivedBlock { block, sender } => {
                write!(f, "received {} from {}", block, sender)
            }
            Event::CreatedFinalitySignature { finality_signature } => {
                write!(f, "created {}", finality_signature)
            }
            Event::ReceivedFinalitySignature {
                finality_signature,
                sender,
            } => {
                write!(f, "received {} from {}", finality_signature, sender)
            }
            Event::ExecutedBlock { meta_block } => {
                write!(f, "executed block {}", meta_block.block.hash())
            }
            Event::Stored {
                maybe_meta_block: Some(meta_block),
                maybe_block_signatures,
            } => {
                write!(
                    f,
                    "stored {} and {} finality signatures",
                    meta_block.block.hash(),
                    maybe_block_signatures
                        .as_ref()
                        .map(|sigs| sigs.len())
                        .unwrap_or_default()
                )
            }
            Event::Stored {
                maybe_meta_block: None,
                maybe_block_signatures,
            } => {
                write!(
                    f,
                    "stored {} finality signatures",
                    maybe_block_signatures
                        .as_ref()
                        .map(|sigs| sigs.len())
                        .unwrap_or_default()
                )
            }
        }
    }
}