Add separate Closed message

This commit is contained in:
Sofia 2026-07-16 02:58:08 +03:00
parent 4c24d1ce46
commit b9e40ceede
2 changed files with 8 additions and 4 deletions

View File

@ -66,12 +66,12 @@ impl ConnectionManager {
pub fn send_pings(&mut self) {
let now = Instant::now();
if let Some(closing_since) = self.closing_since {
if let Some(closing_since) = self.closing_since
&& !self.udp.is_closed()
{
if self.connections.len() == 0 {
println!("UDP closed");
self.udp.close();
} else if now - closing_since > Duration::from_millis(1000) {
println!("UDP closed");
self.udp.close();
}
}

View File

@ -31,6 +31,7 @@ pub enum PeerError {
pub enum PeerMessage {
NewConnection(Connection),
Disconnected(Connection, Option<ConnectionError>),
Closed,
}
pub struct Peer {
@ -79,7 +80,10 @@ impl Peer {
#[must_use]
pub fn poll(&mut self) -> Result<Option<PeerMessage>, PeerError> {
if self.connection_mgr.udp.is_closed() {
self.closed.store(true, Ordering::Relaxed);
if self.closed.load(Ordering::Acquire) {
self.messages.push_back(PeerMessage::Closed);
}
self.closed.store(true, Ordering::Release);
}
self.connection_mgr.send_pings();