#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ConnectionState {
pub(crate) sent_close: bool,
pub(crate) received_close: bool,
pub(crate) can_reuse: bool,
}
impl ConnectionState {
pub const fn new() -> Self {
Self {
sent_close: false,
received_close: false,
can_reuse: true,
}
}
pub const fn mark_sent_close(&mut self) {
self.sent_close = true;
self.can_reuse = false;
}
pub const fn mark_received_close(&mut self) {
self.received_close = true;
self.can_reuse = false;
}
pub const fn can_be_reused(self) -> bool {
self.can_reuse
}
}
impl Default for ConnectionState {
fn default() -> Self {
Self::new()
}
}