Skip to content

Commit 5dd323d

Browse files
committed
Ported PNET layer
1 parent ffccf02 commit 5dd323d

15 files changed

+201
-91
lines changed

node/src/action_kind.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ use crate::p2p::network::kad::stream::P2pNetworkKademliaStreamAction;
4545
use crate::p2p::network::kad::{P2pNetworkKadAction, P2pNetworkKademliaAction};
4646
use crate::p2p::network::noise::P2pNetworkNoiseAction;
4747
use crate::p2p::network::pnet::P2pNetworkPnetAction;
48+
use crate::p2p::network::pnet_effectful::P2pNetworkPnetEffectfulAction;
4849
use crate::p2p::network::pubsub::pubsub_effectful::P2pNetworkPubsubEffectfulAction;
4950
use crate::p2p::network::pubsub::P2pNetworkPubsubAction;
5051
use crate::p2p::network::rpc::P2pNetworkRpcAction;
@@ -307,6 +308,8 @@ pub enum ActionKind {
307308
P2pNetworkPnetOutgoingData,
308309
P2pNetworkPnetSetupNonce,
309310
P2pNetworkPnetTimeout,
311+
P2pNetworkPnetEffectfulOutgoingData,
312+
P2pNetworkPnetEffectfulSetupNonce,
310313
P2pNetworkPubsubBroadcast,
311314
P2pNetworkPubsubBroadcastSigned,
312315
P2pNetworkPubsubGraft,
@@ -558,7 +561,7 @@ pub enum ActionKind {
558561
}
559562

560563
impl ActionKind {
561-
pub const COUNT: u16 = 463;
564+
pub const COUNT: u16 = 465;
562565
}
563566

564567
impl std::fmt::Display for ActionKind {
@@ -958,6 +961,7 @@ impl ActionKindGet for P2pNetworkAction {
958961
Self::Scheduler(a) => a.kind(),
959962
Self::SchedulerEffectful(a) => a.kind(),
960963
Self::Pnet(a) => a.kind(),
964+
Self::PnetEffectful(a) => a.kind(),
961965
Self::Select(a) => a.kind(),
962966
Self::Noise(a) => a.kind(),
963967
Self::Yamux(a) => a.kind(),
@@ -1440,6 +1444,15 @@ impl ActionKindGet for P2pNetworkPnetAction {
14401444
}
14411445
}
14421446

1447+
impl ActionKindGet for P2pNetworkPnetEffectfulAction {
1448+
fn kind(&self) -> ActionKind {
1449+
match self {
1450+
Self::OutgoingData { .. } => ActionKind::P2pNetworkPnetEffectfulOutgoingData,
1451+
Self::SetupNonce { .. } => ActionKind::P2pNetworkPnetEffectfulSetupNonce,
1452+
}
1453+
}
1454+
}
1455+
14431456
impl ActionKindGet for P2pNetworkSelectAction {
14441457
fn kind(&self) -> ActionKind {
14451458
match self {

node/src/logger/logger_effects.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ pub fn logger_effects<S: Service>(store: &Store<S>, action: ActionWithMetaRef<'_
7070
P2pNetworkAction::Scheduler(action) => action.action_event(&context),
7171
P2pNetworkAction::SchedulerEffectful(action) => action.action_event(&context),
7272
P2pNetworkAction::Pnet(action) => action.action_event(&context),
73+
P2pNetworkAction::PnetEffectful(action) => action.action_event(&context),
7374
P2pNetworkAction::Select(action) => action.action_event(&context),
7475
P2pNetworkAction::Noise(action) => action.action_event(&context),
7576
P2pNetworkAction::Yamux(action) => action.action_event(&context),

node/src/p2p/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,5 +113,6 @@ impl_into_global_action!(p2p::P2pNetworkPnetAction);
113113
impl_into_global_action!(p2p::P2pNetworkNoiseAction);
114114
impl_into_global_action!(p2p::P2pNetworkRpcAction);
115115
impl_into_global_action!(p2p::P2pNetworkSchedulerEffectfulAction);
116+
impl_into_global_action!(p2p::P2pNetworkPnetEffectfulAction);
116117

117118
impl p2p::P2pActionTrait<crate::State> for crate::Action {}

p2p/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ pub trait P2pActionTrait<State>:
106106
+ From<P2pNetworkIdentifyStreamEffectfulAction>
107107
+ From<P2pNetworkSelectAction>
108108
+ From<P2pNetworkPnetAction>
109+
+ From<P2pNetworkPnetEffectfulAction>
109110
+ From<P2pNetworkNoiseAction>
110111
+ From<P2pConnectionIncomingAction>
111112
+ From<P2pNetworkPubsubAction>

p2p/src/network/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ pub use self::scheduler_effectful::*;
2828
pub mod pnet;
2929
pub use self::pnet::*;
3030

31+
pub mod pnet_effectful;
32+
pub use self::pnet_effectful::*;
33+
3134
pub mod select;
3235
pub use self::select::*;
3336

p2p/src/network/p2p_network_actions.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use openmina_core::ActionEvent;
22
use serde::{Deserialize, Serialize};
33

44
use super::{
5-
identify::*, kad::*, noise::*, pnet::*, pubsub::*, rpc::*, scheduler::*, select::*, yamux::*,
6-
P2pNetworkSchedulerEffectfulAction,
5+
identify::*, kad::*, noise::*, pnet::*, pnet_effectful::*, pubsub::*, rpc::*, scheduler::*,
6+
select::*, yamux::*, P2pNetworkSchedulerEffectfulAction,
77
};
88

99
use crate::P2pState;
@@ -13,6 +13,7 @@ pub enum P2pNetworkAction {
1313
Scheduler(P2pNetworkSchedulerAction),
1414
SchedulerEffectful(P2pNetworkSchedulerEffectfulAction),
1515
Pnet(P2pNetworkPnetAction),
16+
PnetEffectful(P2pNetworkPnetEffectfulAction),
1617
Select(P2pNetworkSelectAction),
1718
Noise(P2pNetworkNoiseAction),
1819
Yamux(P2pNetworkYamuxAction),
@@ -29,6 +30,7 @@ impl redux::EnablingCondition<P2pState> for P2pNetworkAction {
2930
Self::Scheduler(v) => v.is_enabled(state, time),
3031
Self::SchedulerEffectful(v) => v.is_enabled(state, time),
3132
Self::Pnet(v) => v.is_enabled(state, time),
33+
Self::PnetEffectful(v) => v.is_enabled(state, time),
3234
Self::Select(v) => v.is_enabled(state, time),
3335
Self::Noise(v) => v.is_enabled(state, time),
3436
Self::Yamux(v) => v.is_enabled(state, time),

p2p/src/network/p2p_network_effects.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ impl P2pNetworkAction {
99
Store::Service: P2pMioService + P2pCryptoService + P2pNetworkService,
1010
{
1111
match self {
12-
P2pNetworkAction::Pnet(v) => v.effects(meta, store),
1312
P2pNetworkAction::Identify(v) => match v.effects(meta, store) {
1413
Ok(_) => {}
1514
Err(e) => error!(meta.time(); "error dispatching Identify stream action: {e}"),
1615
},
17-
P2pNetworkAction::Select(_)
16+
P2pNetworkAction::Pnet(_)
17+
| P2pNetworkAction::Select(_)
1818
| P2pNetworkAction::Noise(_)
1919
| P2pNetworkAction::Yamux(_)
2020
| P2pNetworkAction::Kad(_)
@@ -25,6 +25,7 @@ impl P2pNetworkAction {
2525
}
2626
P2pNetworkAction::SchedulerEffectful(v) => v.effects(meta, store),
2727
P2pNetworkAction::PubsubEffectful(v) => v.effects(meta, store),
28+
P2pNetworkAction::PnetEffectful(v) => v.effects(meta, store),
2829
}
2930
}
3031
}

p2p/src/network/p2p_network_reducer.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,20 @@ use super::*;
66

77
impl P2pNetworkState {
88
pub fn reducer<State, Action>(
9-
mut state_context: Substate<Action, State, Self>,
9+
state_context: Substate<Action, State, Self>,
1010
action: redux::ActionWithMeta<&P2pNetworkAction>,
1111
limits: &P2pLimits,
1212
) -> Result<(), String>
1313
where
1414
State: crate::P2pStateTrait,
1515
Action: crate::P2pActionTrait<State>,
1616
{
17-
let state = state_context.get_substate_mut()?;
18-
1917
let (action, meta) = action.split();
2018
match action {
21-
P2pNetworkAction::Pnet(a) => {
22-
if let Some(cn) = state.scheduler.connections.get_mut(a.addr()) {
23-
cn.pnet.reducer(meta.with_action(a))
24-
}
25-
Ok(())
26-
}
19+
P2pNetworkAction::Pnet(a) => P2pNetworkPnetState::reducer(
20+
Substate::from_compatible_substate(state_context),
21+
meta.with_action(a),
22+
),
2723
P2pNetworkAction::Scheduler(a) => P2pNetworkSchedulerState::reducer(
2824
Substate::from_compatible_substate(state_context),
2925
meta.with_action(a),
@@ -59,7 +55,9 @@ impl P2pNetworkState {
5955
meta.with_action(a),
6056
limits,
6157
),
62-
P2pNetworkAction::PubsubEffectful(_) | P2pNetworkAction::SchedulerEffectful(_) => {
58+
P2pNetworkAction::PubsubEffectful(_)
59+
| P2pNetworkAction::SchedulerEffectful(_)
60+
| P2pNetworkAction::PnetEffectful(_) => {
6361
// Effectful action; no reducer
6462
Ok(())
6563
}

p2p/src/network/pnet/mod.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,3 @@ pub use self::p2p_network_pnet_state::P2pNetworkPnetState;
66

77
#[cfg(feature = "p2p-libp2p")]
88
mod p2p_network_pnet_reducer;
9-
10-
#[cfg(feature = "p2p-libp2p")]
11-
mod p2p_network_pnet_effects;

p2p/src/network/pnet/p2p_network_pnet_effects.rs

Lines changed: 0 additions & 63 deletions
This file was deleted.

0 commit comments

Comments
 (0)