Skip to content

Commit 8b6ee76

Browse files
committed
feat(yamux): Split incoming frame handling into multiple actions
1 parent 7658139 commit 8b6ee76

File tree

4 files changed

+245
-126
lines changed

4 files changed

+245
-126
lines changed

node/src/action_kind.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,10 @@ pub enum ActionKind {
460460
P2pNetworkSelectTimeout,
461461
P2pNetworkYamuxIncomingData,
462462
P2pNetworkYamuxIncomingFrame,
463+
P2pNetworkYamuxIncomingFrameData,
464+
P2pNetworkYamuxIncomingFrameGoAway,
465+
P2pNetworkYamuxIncomingFramePing,
466+
P2pNetworkYamuxIncomingFrameWindowUpdate,
463467
P2pNetworkYamuxOpenStream,
464468
P2pNetworkYamuxOutgoingData,
465469
P2pNetworkYamuxOutgoingFrame,
@@ -720,7 +724,7 @@ pub enum ActionKind {
720724
}
721725

722726
impl ActionKind {
723-
pub const COUNT: u16 = 610;
727+
pub const COUNT: u16 = 614;
724728
}
725729

726730
impl std::fmt::Display for ActionKind {
@@ -1948,6 +1952,12 @@ impl ActionKindGet for P2pNetworkYamuxAction {
19481952
Self::IncomingData { .. } => ActionKind::P2pNetworkYamuxIncomingData,
19491953
Self::OutgoingData { .. } => ActionKind::P2pNetworkYamuxOutgoingData,
19501954
Self::IncomingFrame { .. } => ActionKind::P2pNetworkYamuxIncomingFrame,
1955+
Self::IncomingFrameData { .. } => ActionKind::P2pNetworkYamuxIncomingFrameData,
1956+
Self::IncomingFramePing { .. } => ActionKind::P2pNetworkYamuxIncomingFramePing,
1957+
Self::IncomingFrameWindowUpdate { .. } => {
1958+
ActionKind::P2pNetworkYamuxIncomingFrameWindowUpdate
1959+
}
1960+
Self::IncomingFrameGoAway { .. } => ActionKind::P2pNetworkYamuxIncomingFrameGoAway,
19511961
Self::OutgoingFrame { .. } => ActionKind::P2pNetworkYamuxOutgoingFrame,
19521962
Self::PingStream { .. } => ActionKind::P2pNetworkYamuxPingStream,
19531963
Self::OpenStream { .. } => ActionKind::P2pNetworkYamuxOpenStream,

p2p/src/network/yamux/p2p_network_yamux_actions.rs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,22 @@ pub enum P2pNetworkYamuxAction {
2222
addr: ConnectionAddr,
2323
},
2424
#[action_event(level = trace)]
25+
IncomingFrameData {
26+
addr: ConnectionAddr,
27+
},
28+
#[action_event(level = trace)]
29+
IncomingFramePing {
30+
addr: ConnectionAddr,
31+
},
32+
#[action_event(level = trace)]
33+
IncomingFrameWindowUpdate {
34+
addr: ConnectionAddr,
35+
},
36+
#[action_event(level = trace)]
37+
IncomingFrameGoAway {
38+
addr: ConnectionAddr,
39+
},
40+
#[action_event(level = trace)]
2541
OutgoingFrame {
2642
addr: ConnectionAddr,
2743
frame: YamuxFrame,
@@ -43,6 +59,10 @@ impl P2pNetworkYamuxAction {
4359
Self::IncomingData { addr, .. } => addr,
4460
Self::OutgoingData { addr, .. } => addr,
4561
Self::IncomingFrame { addr, .. } => addr,
62+
Self::IncomingFrameData { addr, .. } => addr,
63+
Self::IncomingFramePing { addr, .. } => addr,
64+
Self::IncomingFrameWindowUpdate { addr, .. } => addr,
65+
Self::IncomingFrameGoAway { addr, .. } => addr,
4666
Self::OutgoingFrame { addr, .. } => addr,
4767
Self::PingStream { addr, .. } => addr,
4868
Self::OpenStream { addr, .. } => addr,
@@ -72,7 +92,11 @@ impl redux::EnablingCondition<P2pState> for P2pNetworkYamuxAction {
7292
P2pNetworkYamuxAction::OutgoingData { stream_id, .. } => {
7393
yamux_state.streams.contains_key(stream_id)
7494
}
75-
P2pNetworkYamuxAction::IncomingFrame { .. } => true,
95+
P2pNetworkYamuxAction::IncomingFrame { .. }
96+
| P2pNetworkYamuxAction::IncomingFrameData { .. }
97+
| P2pNetworkYamuxAction::IncomingFramePing { .. }
98+
| P2pNetworkYamuxAction::IncomingFrameWindowUpdate { .. }
99+
| P2pNetworkYamuxAction::IncomingFrameGoAway { .. } => !yamux_state.incoming.is_empty(),
76100
P2pNetworkYamuxAction::OutgoingFrame { .. } => true,
77101
P2pNetworkYamuxAction::PingStream { .. } => true,
78102
P2pNetworkYamuxAction::OpenStream { .. } => true,

0 commit comments

Comments
 (0)