node/
service.rs

1pub use crate::{
2    block_producer_effectful::{
3        vrf_evaluator_effectful::BlockProducerVrfEvaluatorService, BlockProducerService,
4    },
5    event_source::EventSourceService,
6    external_snark_worker_effectful::ExternalSnarkWorkerService,
7    ledger::LedgerService,
8    p2p::service::*,
9    recorder::Recorder,
10    rpc_effectful::RpcService,
11    snark::{
12        block_verify_effectful::SnarkBlockVerifyService,
13        work_verify_effectful::SnarkWorkVerifyService,
14    },
15    snark_pool::SnarkPoolService,
16    transition_frontier::{
17        archive::archive_service::ArchiveService,
18        genesis_effectful::TransitionFrontierGenesisService,
19        sync::ledger::snarked::TransitionFrontierSyncLedgerSnarkedService,
20    },
21};
22pub use redux::TimeService;
23pub use snark::user_command_verify_effectful::SnarkUserCommandVerifyService;
24
25use crate::stats::Stats;
26
27pub trait Service:
28    TimeService
29    + EventSourceService
30    + SnarkBlockVerifyService
31    + SnarkWorkVerifyService
32    + P2pService
33    + LedgerService
34    + TransitionFrontierGenesisService
35    + TransitionFrontierSyncLedgerSnarkedService
36    + SnarkPoolService
37    + SnarkUserCommandVerifyService
38    + BlockProducerVrfEvaluatorService
39    + BlockProducerService
40    + ExternalSnarkWorkerService
41    + RpcService
42    + ArchiveService
43{
44    fn queues(&mut self) -> Queues;
45    fn stats(&mut self) -> Option<&mut Stats>;
46    fn recorder(&mut self) -> &mut Recorder;
47    fn is_replay(&self) -> bool;
48}
49
50#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
51pub struct Queues {
52    pub events: usize,
53    pub snark_block_verify: usize,
54    pub ledger: usize,
55    pub vrf_evaluator: Option<usize>,
56    pub block_prover: Option<usize>,
57    pub p2p_webrtc: usize,
58    #[cfg(feature = "p2p-libp2p")]
59    pub p2p_libp2p: usize,
60    pub rpc: usize,
61}