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) {
|
pub fn send_pings(&mut self) {
|
||||||
let now = Instant::now();
|
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 {
|
if self.connections.len() == 0 {
|
||||||
println!("UDP closed");
|
|
||||||
self.udp.close();
|
self.udp.close();
|
||||||
} else if now - closing_since > Duration::from_millis(1000) {
|
} else if now - closing_since > Duration::from_millis(1000) {
|
||||||
println!("UDP closed");
|
|
||||||
self.udp.close();
|
self.udp.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,6 +31,7 @@ pub enum PeerError {
|
|||||||
pub enum PeerMessage {
|
pub enum PeerMessage {
|
||||||
NewConnection(Connection),
|
NewConnection(Connection),
|
||||||
Disconnected(Connection, Option<ConnectionError>),
|
Disconnected(Connection, Option<ConnectionError>),
|
||||||
|
Closed,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Peer {
|
pub struct Peer {
|
||||||
@ -79,7 +80,10 @@ impl Peer {
|
|||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn poll(&mut self) -> Result<Option<PeerMessage>, PeerError> {
|
pub fn poll(&mut self) -> Result<Option<PeerMessage>, PeerError> {
|
||||||
if self.connection_mgr.udp.is_closed() {
|
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();
|
self.connection_mgr.send_pings();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user