liminal-server 0.24.2

Standalone server for the liminal messaging bus
Documentation
//! The peer listener can leave and return without replacing its authority or services.
use super::fixture::Server;
use super::{OBSERVATION, Result};
use liminal_server::server::ServerListener;
impl Server {
    pub(super) fn pause_listener(&mut self) -> Result {
        if let Some(listener) = self.listener.take() {
            self.config.listen_address = listener.local_addr();
            listener.shutdown()?;
        }
        let since = self.supervisor.departures()?;
        let count = u64::try_from(self.supervisor.active_connection_count())?;
        self.supervisor.force_close_active_connections();
        assert!(
            self.supervisor.await_departures(
                since,
                count,
                std::time::Instant::now()
                    .checked_add(OBSERVATION)
                    .ok_or("observation deadline overflow")?
            )?
        );
        Ok(())
    }
    pub(super) fn resume_listener(&mut self) -> Result {
        self.listener = Some(ServerListener::bind(&self.config, self.supervisor.clone())?);
        Ok(())
    }
}