node/event_source/
event.rs

1use serde::{Deserialize, Serialize};
2
3pub use crate::{
4    block_producer::BlockProducerEvent,
5    external_snark_worker_effectful::ExternalSnarkWorkerEvent,
6    ledger::LedgerEvent,
7    p2p::{P2pConnectionEvent, P2pEvent},
8    rpc::{RpcId, RpcRequest},
9    snark::SnarkEvent,
10};
11
12use crate::transition_frontier::genesis::GenesisConfigLoaded;
13
14#[derive(derive_more::From, Serialize, Deserialize, Debug, Clone)]
15pub enum Event {
16    P2p(P2pEvent),
17    Ledger(LedgerEvent),
18    Snark(SnarkEvent),
19    Rpc(RpcId, Box<RpcRequest>),
20    ExternalSnarkWorker(ExternalSnarkWorkerEvent),
21    BlockProducerEvent(BlockProducerEvent),
22
23    GenesisLoad(Result<GenesisConfigLoaded, String>),
24}
25
26impl std::fmt::Display for Event {
27    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
28        match self {
29            Self::P2p(v) => v.fmt(f),
30            Self::Ledger(v) => v.fmt(f),
31            Self::Snark(v) => v.fmt(f),
32            Self::Rpc(id, req) => {
33                write!(f, "Rpc, {id}, ")?;
34                match req.as_ref() {
35                    RpcRequest::StateGet(filter) => write!(f, "StateGet, {filter:?}"),
36                    RpcRequest::StatusGet => write!(f, "StatusGet"),
37                    RpcRequest::HeartbeatGet => write!(f, "HeartbeatGet"),
38                    RpcRequest::ActionStatsGet(query) => write!(f, "ActionStatsGet, {query:?}"),
39                    RpcRequest::SyncStatsGet(query) => write!(f, "SyncStatsGet, {query:?}"),
40                    RpcRequest::BlockProducerStatsGet => write!(f, "BlockProducerStatsGet"),
41                    RpcRequest::PeersGet => write!(f, "PeersGet"),
42                    RpcRequest::MessageProgressGet => write!(f, "MessageProgressGet"),
43                    RpcRequest::P2pConnectionOutgoing(opts) => {
44                        write!(f, "P2pConnectionOutgoing, {opts}")
45                    }
46                    RpcRequest::P2pConnectionIncoming(opts) => {
47                        write!(f, "P2pConnectionIncoming, {}", opts.peer_id)
48                    }
49                    RpcRequest::ScanStateSummaryGet(query) => {
50                        write!(f, "ScanStateSummaryGet, {query:?}")
51                    }
52                    RpcRequest::SnarkPoolGet => write!(f, "SnarkPoolGet"),
53                    RpcRequest::SnarkPoolJobGet { job_id } => {
54                        write!(f, "SnarkPoolJobGet, {job_id}")
55                    }
56                    RpcRequest::SnarkPoolCompletedJobsGet => write!(f, "SnarkPoolCompletedJobsGet"),
57                    RpcRequest::SnarkPoolPendingJobsGet => write!(f, "SnarkPoolPendingJobsGet"),
58                    RpcRequest::SnarkerConfig => write!(f, "SnarkerConfig"),
59                    RpcRequest::SnarkerJobCommit { job_id } => {
60                        write!(f, "SnarkerJobCommit, {job_id}")
61                    }
62                    RpcRequest::SnarkerJobSpec { job_id } => write!(f, "SnarkerJobSpec, {job_id}"),
63                    RpcRequest::SnarkerWorkers => write!(f, "SnarkerWorkers"),
64                    RpcRequest::HealthCheck => write!(f, "HealthCheck"),
65                    RpcRequest::ReadinessCheck => write!(f, "ReadinessCheck"),
66                    RpcRequest::DiscoveryRoutingTable => write!(f, "DiscoveryRoutingTable"),
67                    RpcRequest::DiscoveryBoostrapStats => write!(f, "DiscoveryBoostrapStats"),
68                    RpcRequest::TransactionPoolGet => write!(f, "TransactionPool"),
69                    RpcRequest::LedgerAccountsGet(account_query) => {
70                        write!(f, "LedgerAccountsGet, {account_query:?}")
71                    }
72                    RpcRequest::TransactionInject(..) => write!(f, "TransactionInject"),
73                    RpcRequest::TransitionFrontierUserCommandsGet => {
74                        write!(f, "TransitionFrontierUserCommandsGet")
75                    }
76                    RpcRequest::BestChain(..) => write!(f, "BestChain"),
77                    RpcRequest::ConsensusConstantsGet => write!(f, "ConsensusConstantsGet"),
78                    RpcRequest::TransactionStatusGet(..) => write!(f, "TransactionStatusGet"),
79                    RpcRequest::GetBlock(..) => write!(f, "GetBlock"),
80                    RpcRequest::PooledUserCommands(..) => write!(f, "PooledUserCommands"),
81                    RpcRequest::PooledZkappCommands(..) => write!(f, "PooledZkappCommands"),
82                    RpcRequest::GenesisBlockGet => write!(f, "GenesisBlock"),
83                    RpcRequest::ConsensusTimeGet(..) => write!(f, "ConsensusTimeGet"),
84                    RpcRequest::LedgerStatusGet(..) => write!(f, "LedgerStatusGet"),
85                    RpcRequest::LedgerAccountDelegatorsGet(..) => {
86                        write!(f, "LedgerAccountDelegatorsGet")
87                    }
88                }
89            }
90            Self::ExternalSnarkWorker(event) => {
91                write!(f, "ExternalSnarkWorker, ")?;
92
93                match event {
94                    ExternalSnarkWorkerEvent::Started => write!(f, "Started"),
95                    ExternalSnarkWorkerEvent::Killed => write!(f, "Killed"),
96                    ExternalSnarkWorkerEvent::WorkResult(_) => write!(f, "WorkResult"),
97                    ExternalSnarkWorkerEvent::WorkError(_) => write!(f, "WorkError"),
98                    ExternalSnarkWorkerEvent::WorkCancelled => write!(f, "WorkCancelled"),
99                    ExternalSnarkWorkerEvent::Error(_) => write!(f, "Error"),
100                }
101            }
102            Self::BlockProducerEvent(event) => event.fmt(f),
103            Self::GenesisLoad(res) => {
104                write!(f, "GenesisLoad, ")?;
105                match res {
106                    Err(_) => {
107                        write!(f, "Err")
108                    }
109                    Ok(data) => {
110                        write!(f, "Ok, {}", data.genesis_ledger_hash)
111                    }
112                }
113            }
114        }
115    }
116}