p2p/connection/
p2p_connection_reducer.rs

1use openmina_core::Substate;
2use redux::ActionWithMeta;
3
4use super::{
5    incoming::P2pConnectionIncomingState, outgoing::P2pConnectionOutgoingState,
6    P2pConnectionAction, P2pConnectionState,
7};
8use crate::P2pState;
9
10impl P2pConnectionState {
11    pub fn reducer<Action, State>(
12        state_context: Substate<Action, State, P2pState>,
13        action: ActionWithMeta<P2pConnectionAction>,
14    ) -> Result<(), String>
15    where
16        State: crate::P2pStateTrait,
17        Action: crate::P2pActionTrait<State>,
18    {
19        let (action, meta) = action.split();
20
21        match action {
22            P2pConnectionAction::Outgoing(action) => {
23                P2pConnectionOutgoingState::reducer(state_context, meta.with_action(action))
24            }
25            P2pConnectionAction::Incoming(action) => {
26                P2pConnectionIncomingState::reducer(state_context, meta.with_action(action))
27            }
28        }
29    }
30}