p2p/connection/
p2p_connection_actions.rs

1use super::{
2    incoming::P2pConnectionIncomingAction,
3    incoming_effectful::P2pConnectionIncomingEffectfulAction,
4    outgoing::P2pConnectionOutgoingAction,
5    outgoing_effectful::P2pConnectionOutgoingEffectfulAction,
6};
7use openmina_core::ActionEvent;
8use serde::{Deserialize, Serialize};
9
10#[derive(Serialize, Deserialize, Debug, Clone, ActionEvent)]
11pub enum P2pConnectionAction {
12    Outgoing(P2pConnectionOutgoingAction),
13    Incoming(P2pConnectionIncomingAction),
14}
15
16#[derive(Serialize, Deserialize, Debug, Clone, ActionEvent)]
17pub enum P2pConnectionEffectfulAction {
18    Outgoing(P2pConnectionOutgoingEffectfulAction),
19    Incoming(P2pConnectionIncomingEffectfulAction),
20}
21
22impl redux::EnablingCondition<crate::P2pState> for P2pConnectionAction {
23    fn is_enabled(&self, state: &crate::P2pState, time: redux::Timestamp) -> bool {
24        match self {
25            P2pConnectionAction::Outgoing(a) => a.is_enabled(state, time),
26            P2pConnectionAction::Incoming(a) => a.is_enabled(state, time),
27        }
28    }
29}
30
31impl redux::EnablingCondition<crate::P2pState> for P2pConnectionEffectfulAction {
32    fn is_enabled(&self, state: &crate::P2pState, time: redux::Timestamp) -> bool {
33        match self {
34            P2pConnectionEffectfulAction::Outgoing(a) => a.is_enabled(state, time),
35            P2pConnectionEffectfulAction::Incoming(a) => a.is_enabled(state, time),
36        }
37    }
38}