p2p/network/
p2p_network_actions.rs1use openmina_core::ActionEvent;
2use serde::{Deserialize, Serialize};
3
4use super::{
5 identify::*, kad::*, noise::*, pnet::*, pnet_effectful::*, pubsub::*, rpc::*, scheduler::*,
6 select::*, yamux::*, P2pNetworkSchedulerEffectfulAction,
7};
8
9use crate::P2pState;
10
11#[derive(derive_more::From, Serialize, Deserialize, Debug, Clone, ActionEvent)]
12pub enum P2pNetworkAction {
13 Scheduler(P2pNetworkSchedulerAction),
14 Pnet(P2pNetworkPnetAction),
15 Select(P2pNetworkSelectAction),
16 Noise(P2pNetworkNoiseAction),
17 Yamux(P2pNetworkYamuxAction),
18 Identify(P2pNetworkIdentifyAction),
19 Kad(P2pNetworkKadAction),
20 Pubsub(P2pNetworkPubsubAction),
21 Rpc(P2pNetworkRpcAction),
22}
23
24impl redux::EnablingCondition<P2pState> for P2pNetworkAction {
25 fn is_enabled(&self, state: &P2pState, time: redux::Timestamp) -> bool {
26 match self {
27 Self::Scheduler(v) => v.is_enabled(state, time),
28 Self::Pnet(v) => v.is_enabled(state, time),
29 Self::Select(v) => v.is_enabled(state, time),
30 Self::Noise(v) => v.is_enabled(state, time),
31 Self::Yamux(v) => v.is_enabled(state, time),
32 Self::Identify(v) => v.is_enabled(state, time),
33 Self::Kad(v) => v.is_enabled(state, time),
34 Self::Pubsub(v) => v.is_enabled(state, time),
35 Self::Rpc(v) => v.is_enabled(state, time),
36 }
37 }
38}
39
40#[derive(derive_more::From, Serialize, Deserialize, Debug, Clone, ActionEvent)]
41pub enum P2pNetworkEffectfulAction {
42 Scheduler(P2pNetworkSchedulerEffectfulAction),
43 Pnet(P2pNetworkPnetEffectfulAction),
44 Pubsub(P2pNetworkPubsubEffectfulAction),
45 Identify(P2pNetworkIdentifyEffectfulAction),
46 Kad(P2pNetworkKadEffectfulAction),
47}
48
49impl redux::EnablingCondition<P2pState> for P2pNetworkEffectfulAction {
50 fn is_enabled(&self, state: &P2pState, time: redux::Timestamp) -> bool {
51 match self {
52 Self::Scheduler(v) => v.is_enabled(state, time),
53 Self::Pnet(v) => v.is_enabled(state, time),
54 Self::Pubsub(v) => v.is_enabled(state, time),
55 Self::Identify(v) => v.is_enabled(state, time),
56 Self::Kad(v) => v.is_enabled(state, time),
57 }
58 }
59}