p2p/network/pnet_effectful/
p2p_network_pnet_effectful_effects.rs

1use openmina_core::fuzzed_maybe;
2
3use super::P2pNetworkPnetEffectfulAction;
4use crate::{P2pMioService, P2pNetworkSelectAction, SelectKind};
5
6impl P2pNetworkPnetEffectfulAction {
7    pub fn effects<Store, S>(self, _meta: &redux::ActionMeta, store: &mut Store)
8    where
9        Store: crate::P2pStore<S>,
10        Store::Service: P2pMioService,
11    {
12        let service = store.service();
13
14        match self {
15            P2pNetworkPnetEffectfulAction::OutgoingData { addr, data } => {
16                let data = fuzzed_maybe!(data, crate::fuzzer::mutate_pnet);
17                service.send_mio_cmd(crate::MioCmd::Send(addr, data.into_boxed_slice()));
18            }
19            P2pNetworkPnetEffectfulAction::SetupNonce {
20                addr,
21                nonce,
22                incoming,
23            } => {
24                service.send_mio_cmd(crate::MioCmd::Send(addr, nonce.to_vec().into_boxed_slice()));
25                store.dispatch(P2pNetworkSelectAction::Init {
26                    addr,
27                    kind: SelectKind::Authentication,
28                    incoming,
29                });
30            }
31        }
32    }
33}