Add separate Closed message
This commit is contained in:
parent
4c24d1ce46
commit
b9e40ceede
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user