fix(peer): coalesce full UI view publications
Keep one queued and one replaceable pending snapshot for remote-library and Call-to-Play views while preserving lifecycle-event FIFO delivery. Generation barriers and fenced drains prevent stale nonempty views from crossing disable or acknowledgement boundaries. Test Plan: - just test - just clippy - focused burst, lifecycle ordering, fence, repeated-barrier, and stale-view tests - independent ordering review - git diff --check
This commit is contained in:
1 parent
470e119515
commit
37420e26ed
17 files changed
+828
-251
No files matched your search
@@ -9,7 +9,7 @@ use std::{
|
||||
use futures::stream::FuturesUnordered;
|
||||
use lanspread_db::content_manifest::ContentId;
|
||||
use lanspread_proto::PeerEndpoint;
|
||||
use tokio::sync::mpsc::UnboundedSender;
|
||||
use crate::PeerEventSender;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
use super::{
|
||||
@@ -153,7 +153,7 @@ pub(crate) struct DownloadGameRequest<'a> {
|
||||
pub(crate) sources: &'a [PeerEndpoint],
|
||||
pub(crate) content_id: ContentId,
|
||||
pub(crate) quarantine: &'a ContentQuarantine,
|
||||
pub(crate) tx_notify_ui: UnboundedSender<PeerEvent>,
|
||||
pub(crate) tx_notify_ui: PeerEventSender,
|
||||
pub(crate) cancel_token: CancellationToken,
|
||||
pub(crate) quic: QuicConnector,
|
||||
}
|
||||
@@ -372,7 +372,7 @@ struct TransferContext<'a> {
|
||||
sources: &'a [PeerEndpoint],
|
||||
content_id: ContentId,
|
||||
quarantine: &'a ContentQuarantine,
|
||||
tx_notify_ui: &'a UnboundedSender<PeerEvent>,
|
||||
tx_notify_ui: &'a PeerEventSender,
|
||||
cancel_token: &'a CancellationToken,
|
||||
quic: &'a QuicConnector,
|
||||
version_buffer: Arc<VersionIniBuffer>,
|
||||
|
||||
Reference in new issue
Block a user