p2p/network/pnet_effectful/
p2p_network_pnet_effectful_actions.rs1use 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}