use std::fmt;
use std::time::Duration;
pub trait HandleEvent: fmt::Debug + Sync + Send {
#[allow(unused_variables)]
fn handle_acquire(&self, event: AcquireEvent) {}
#[allow(unused_variables)]
fn handle_release(&self, event: ReleaseEvent) {}
#[allow(unused_variables)]
fn handle_checkout(&self, event: CheckoutEvent) {}
#[allow(unused_variables)]
fn handle_timeout(&self, event: TimeoutEvent) {}
#[allow(unused_variables)]
fn handle_checkin(&self, event: CheckinEvent) {}
}
#[derive(Copy, Clone, Debug)]
pub struct NopEventHandler;
impl HandleEvent for NopEventHandler {}
#[derive(Debug)]
pub struct AcquireEvent {
pub(crate) id: u64,
}
impl AcquireEvent {
#[inline]
pub fn connection_id(&self) -> u64 {
self.id
}
}
#[derive(Debug)]
pub struct ReleaseEvent {
pub(crate) id: u64,
pub(crate) age: Duration,
}
impl ReleaseEvent {
#[inline]
pub fn connection_id(&self) -> u64 {
self.id
}
#[inline]
pub fn age(&self) -> Duration {
self.age
}
}
#[derive(Debug)]
pub struct CheckoutEvent {
pub(crate) id: u64,
pub(crate) duration: Duration,
}
impl CheckoutEvent {
#[inline]
pub fn connection_id(&self) -> u64 {
self.id
}
#[inline]
pub fn duration(&self) -> Duration {
self.duration
}
}
#[derive(Debug)]
pub struct TimeoutEvent {
pub(crate) timeout: Duration,
}
impl TimeoutEvent {
#[inline]
pub fn timeout(&self) -> Duration {
self.timeout
}
}
#[derive(Debug)]
pub struct CheckinEvent {
pub(crate) id: u64,
pub(crate) duration: Duration,
}
impl CheckinEvent {
#[inline]
pub fn connection_id(&self) -> u64 {
self.id
}
#[inline]
pub fn duration(&self) -> Duration {
self.duration
}
}