Skip to content

Commit ffccf02

Browse files
committed
Removed state access from effectful effects
1 parent 41f37b3 commit ffccf02

File tree

8 files changed

+318
-341
lines changed

8 files changed

+318
-341
lines changed

node/src/action_kind.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,7 @@ pub enum ActionKind {
333333
P2pNetworkSchedulerDisconnected,
334334
P2pNetworkSchedulerError,
335335
P2pNetworkSchedulerIncomingDataDidReceive,
336+
P2pNetworkSchedulerIncomingDataIsReady,
336337
P2pNetworkSchedulerIncomingDidAccept,
337338
P2pNetworkSchedulerInterfaceDetected,
338339
P2pNetworkSchedulerInterfaceExpired,
@@ -344,16 +345,17 @@ pub enum ActionKind {
344345
P2pNetworkSchedulerPruneStream,
345346
P2pNetworkSchedulerPruneStreams,
346347
P2pNetworkSchedulerSelectDone,
348+
P2pNetworkSchedulerSelectError,
347349
P2pNetworkSchedulerYamuxDidInit,
348350
P2pNetworkSchedulerEffectfulDisconnect,
349351
P2pNetworkSchedulerEffectfulError,
350352
P2pNetworkSchedulerEffectfulIncomingConnectionIsReady,
351353
P2pNetworkSchedulerEffectfulIncomingDataIsReady,
352354
P2pNetworkSchedulerEffectfulIncomingDidAccept,
353355
P2pNetworkSchedulerEffectfulInterfaceDetected,
356+
P2pNetworkSchedulerEffectfulNoiseSelectDone,
354357
P2pNetworkSchedulerEffectfulOutgoingConnect,
355358
P2pNetworkSchedulerEffectfulOutgoingDidConnect,
356-
P2pNetworkSchedulerEffectfulSelectDone,
357359
P2pNetworkSchedulerEffectfulSelectError,
358360
P2pNetworkSelectIncomingData,
359361
P2pNetworkSelectIncomingDataAuth,
@@ -556,7 +558,7 @@ pub enum ActionKind {
556558
}
557559

558560
impl ActionKind {
559-
pub const COUNT: u16 = 461;
561+
pub const COUNT: u16 = 463;
560562
}
561563

562564
impl std::fmt::Display for ActionKind {
@@ -1381,12 +1383,14 @@ impl ActionKindGet for P2pNetworkSchedulerAction {
13811383
Self::ListenerReady { .. } => ActionKind::P2pNetworkSchedulerListenerReady,
13821384
Self::ListenerError { .. } => ActionKind::P2pNetworkSchedulerListenerError,
13831385
Self::IncomingDidAccept { .. } => ActionKind::P2pNetworkSchedulerIncomingDidAccept,
1386+
Self::IncomingDataIsReady { .. } => ActionKind::P2pNetworkSchedulerIncomingDataIsReady,
13841387
Self::OutgoingConnect { .. } => ActionKind::P2pNetworkSchedulerOutgoingConnect,
13851388
Self::OutgoingDidConnect { .. } => ActionKind::P2pNetworkSchedulerOutgoingDidConnect,
13861389
Self::IncomingDataDidReceive { .. } => {
13871390
ActionKind::P2pNetworkSchedulerIncomingDataDidReceive
13881391
}
13891392
Self::SelectDone { .. } => ActionKind::P2pNetworkSchedulerSelectDone,
1393+
Self::SelectError { .. } => ActionKind::P2pNetworkSchedulerSelectError,
13901394
Self::YamuxDidInit { .. } => ActionKind::P2pNetworkSchedulerYamuxDidInit,
13911395
Self::Disconnect { .. } => ActionKind::P2pNetworkSchedulerDisconnect,
13921396
Self::Error { .. } => ActionKind::P2pNetworkSchedulerError,
@@ -1417,7 +1421,7 @@ impl ActionKindGet for P2pNetworkSchedulerEffectfulAction {
14171421
Self::IncomingDataIsReady { .. } => {
14181422
ActionKind::P2pNetworkSchedulerEffectfulIncomingDataIsReady
14191423
}
1420-
Self::SelectDone { .. } => ActionKind::P2pNetworkSchedulerEffectfulSelectDone,
1424+
Self::NoiseSelectDone { .. } => ActionKind::P2pNetworkSchedulerEffectfulNoiseSelectDone,
14211425
Self::SelectError { .. } => ActionKind::P2pNetworkSchedulerEffectfulSelectError,
14221426
Self::Disconnect { .. } => ActionKind::P2pNetworkSchedulerEffectfulDisconnect,
14231427
Self::Error { .. } => ActionKind::P2pNetworkSchedulerEffectfulError,

node/src/event_source/event_source_effects.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,7 @@ pub fn event_source_effects<S: Service>(store: &mut Store<S>, action: EventSourc
9393
});
9494
}
9595
MioEvent::IncomingDataIsReady(addr) => {
96-
store.dispatch(P2pNetworkSchedulerEffectfulAction::IncomingDataIsReady {
97-
addr,
98-
});
96+
store.dispatch(P2pNetworkSchedulerAction::IncomingDataIsReady { addr });
9997
}
10098
MioEvent::IncomingDataDidReceive(addr, result) => {
10199
store.dispatch(P2pNetworkSchedulerAction::IncomingDataDidReceive {

p2p/src/network/scheduler/p2p_network_scheduler_actions.rs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ pub enum P2pNetworkSchedulerAction {
3737
addr: Option<ConnectionAddr>,
3838
result: Result<(), String>,
3939
},
40+
IncomingDataIsReady {
41+
addr: ConnectionAddr,
42+
},
4043
/// Initialize outgoing connection.
4144
OutgoingConnect {
4245
addr: SocketAddr,
@@ -57,6 +60,11 @@ pub enum P2pNetworkSchedulerAction {
5760
incoming: bool,
5861
expected_peer_id: Option<PeerId>,
5962
},
63+
SelectError {
64+
addr: ConnectionAddr,
65+
kind: SelectKind,
66+
error: String,
67+
},
6068
YamuxDidInit {
6169
addr: ConnectionAddr,
6270
peer_id: PeerId,
@@ -113,14 +121,15 @@ impl From<P2pNetworkSchedulerAction> for crate::P2pAction {
113121

114122
impl redux::EnablingCondition<P2pState> for P2pNetworkSchedulerAction {
115123
fn is_enabled(&self, state: &P2pState, _time: redux::Timestamp) -> bool {
116-
let conn = |addr| state.network.scheduler.connections.get(addr);
117-
#[allow(unused_variables)]
118124
match self {
119-
P2pNetworkSchedulerAction::InterfaceDetected { ip } => true,
120-
P2pNetworkSchedulerAction::InterfaceExpired { ip } => true,
121-
P2pNetworkSchedulerAction::ListenerReady { listener } => true,
122-
P2pNetworkSchedulerAction::ListenerError { listener, error } => true,
123-
P2pNetworkSchedulerAction::IncomingDidAccept { addr, result } => {
125+
P2pNetworkSchedulerAction::InterfaceDetected { .. }
126+
| P2pNetworkSchedulerAction::InterfaceExpired { .. }
127+
| P2pNetworkSchedulerAction::ListenerReady { .. }
128+
| P2pNetworkSchedulerAction::ListenerError { .. }
129+
| P2pNetworkSchedulerAction::SelectDone { .. }
130+
| P2pNetworkSchedulerAction::SelectError { .. }
131+
| P2pNetworkSchedulerAction::YamuxDidInit { .. } => true,
132+
P2pNetworkSchedulerAction::IncomingDidAccept { addr, .. } => {
124133
addr.as_ref().map_or(false, |addr| {
125134
!state.network.scheduler.connections.contains_key(addr)
126135
})
@@ -133,23 +142,16 @@ impl redux::EnablingCondition<P2pState> for P2pNetworkSchedulerAction {
133142
sock_addr: *addr,
134143
incoming: false,
135144
}),
136-
P2pNetworkSchedulerAction::OutgoingDidConnect { addr, result } => state
145+
P2pNetworkSchedulerAction::OutgoingDidConnect { addr, .. } => state
137146
.network
138147
.scheduler
139148
.connections
140149
.get(addr)
141150
.map_or(false, |conn_state| !conn_state.incoming),
142-
P2pNetworkSchedulerAction::IncomingDataDidReceive { addr, result } => {
143-
conn(addr).is_some()
151+
P2pNetworkSchedulerAction::IncomingDataDidReceive { addr, .. }
152+
| P2pNetworkSchedulerAction::IncomingDataIsReady { addr } => {
153+
state.network.scheduler.connections.contains_key(addr)
144154
}
145-
P2pNetworkSchedulerAction::SelectDone {
146-
addr,
147-
kind,
148-
protocol,
149-
incoming,
150-
expected_peer_id,
151-
} => true,
152-
P2pNetworkSchedulerAction::YamuxDidInit { addr, peer_id, .. } => true,
153155
P2pNetworkSchedulerAction::Disconnect { addr, .. }
154156
| P2pNetworkSchedulerAction::Error { addr, .. } => state
155157
.network

0 commit comments

Comments
 (0)