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}