p2p/network/identify/
p2p_network_identify_actions.rs1use crate::{
2 network::identify::{
3 stream::P2pNetworkIdentifyStreamAction,
4 stream_effectful::P2pNetworkIdentifyStreamEffectfulAction,
5 },
6 P2pAction, P2pEffectfulAction, P2pNetworkAction, P2pNetworkEffectfulAction, P2pState,
7};
8use openmina_core::ActionEvent;
9use redux::EnablingCondition;
10use serde::{Deserialize, Serialize};
11
12#[derive(Debug, Clone, Serialize, Deserialize, derive_more::From, ActionEvent)]
14pub enum P2pNetworkIdentifyAction {
15 Stream(P2pNetworkIdentifyStreamAction),
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize, derive_more::From, ActionEvent)]
19pub enum P2pNetworkIdentifyEffectfulAction {
20 Stream(P2pNetworkIdentifyStreamEffectfulAction),
21}
22
23impl EnablingCondition<P2pState> for P2pNetworkIdentifyAction {
24 fn is_enabled(&self, state: &P2pState, time: redux::Timestamp) -> bool {
25 match self {
26 P2pNetworkIdentifyAction::Stream(action) => action.is_enabled(state, time),
27 }
28 }
29}
30
31impl EnablingCondition<P2pState> for P2pNetworkIdentifyEffectfulAction {
32 fn is_enabled(&self, state: &P2pState, time: redux::Timestamp) -> bool {
33 match self {
34 P2pNetworkIdentifyEffectfulAction::Stream(action) => action.is_enabled(state, time),
35 }
36 }
37}
38
39impl From<P2pNetworkIdentifyAction> for P2pAction {
40 fn from(value: P2pNetworkIdentifyAction) -> Self {
41 P2pNetworkAction::Identify(value).into()
42 }
43}
44
45impl From<P2pNetworkIdentifyEffectfulAction> for P2pEffectfulAction {
46 fn from(value: P2pNetworkIdentifyEffectfulAction) -> P2pEffectfulAction {
47 P2pEffectfulAction::Network(P2pNetworkEffectfulAction::Identify(value))
48 }
49}