p2p/connection/
p2p_connection_actions.rs1use 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}