diff options
| author | tv <tv@krebsco.de> | 2026-10-26 18:44:09 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-26 18:44:09 +0100 |
| commit | 1c78c817472de3c57aabf1bd8d0f44a4fdf512ff (patch) | |
| tree | 2e6ccef84faf509bd11298d02356eeb1f1c8c6ec /src/swarm/peer/inbound.rs | |
| parent | 25929ef6c9d0fbaaf641eba3b57b223ec7ab8939 (diff) | |
add sync lanes
Diffstat (limited to 'src/swarm/peer/inbound.rs')
| -rw-r--r-- | src/swarm/peer/inbound.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/swarm/peer/inbound.rs b/src/swarm/peer/inbound.rs index 684a358..73cc629 100644 --- a/src/swarm/peer/inbound.rs +++ b/src/swarm/peer/inbound.rs @@ -12,12 +12,17 @@ use super::handshake::{ discover_peers, ensure_handshake, establish_peer, peer_swarm, remember_peer, send_hello_reply, }; use super::keepalive::{heal_if_diverged, local_keepalive, note_keepalive}; +use super::lanes::SyncLanes; use crate::state::AppState; -use crate::swarm::sync::{SyncEvent, handle_sync}; +use crate::swarm::sync::SyncEvent; use crate::transport::{self, ParsedMessage}; +/// Handles `message` from `peer` in arrival order, except that a sync message is only +/// queued here, on `lanes`: everything before it (admission, liveness, the peer's epoch) +/// is done in order, applying it isn't. pub(crate) async fn handle_message( state: &AppState, + lanes: &SyncLanes, peer: String, message: transport::ParsedMessage, ) -> Result<()> { @@ -130,7 +135,7 @@ pub(crate) async fn handle_message( return Ok(()); } crate::swarm::source::synced_from(state, &peer); - handle_sync(state, &peer, envelope).await?; + lanes.enqueue(&peer, envelope); } transport::ParsedMessage::Blob(blob) => { crate::swarm::blob::handle(state, &peer, blob).await; |
