p2p/network/pnet_effectful/
p2p_network_pnet_effectful_actions.rs

1use crate::{ConnectionAddr, Data, P2pState};
2use openmina_core::ActionEvent;
3use serde::{Deserialize, Serialize};
4
5#[derive(Serialize, Deserialize, Debug, Clone, ActionEvent)]
6#[action_event(fields(display(addr), debug(data), incoming), level = trace)]
7pub enum P2pNetworkPnetEffectfulAction {
8    OutgoingData {
9        addr: ConnectionAddr,
10        data: Vec<u8>,
11    },
12    #[action_event(level = debug)]
13    SetupNonce {
14        addr: ConnectionAddr,
15        nonce: Data,
16        incoming: bool,
17    },
18}
19
20impl P2pNetworkPnetEffectfulAction {
21    pub fn addr(&self) -> &ConnectionAddr {
22        match self {
23            Self::OutgoingData { addr, .. } => addr,
24            Self::SetupNonce { addr, .. } => addr,
25        }
26    }
27}
28
29impl From<P2pNetworkPnetEffectfulAction> for crate::P2pEffectfulAction {
30    fn from(a: P2pNetworkPnetEffectfulAction) -> crate::P2pEffectfulAction {
31        crate::P2pEffectfulAction::Network(crate::P2pNetworkEffectfulAction::Pnet(a))
32    }
33}
34
35impl redux::EnablingCondition<P2pState> for P2pNetworkPnetEffectfulAction {
36    fn is_enabled(&self, _state: &P2pState, _time: redux::Timestamp) -> bool {
37        true
38    }
39}