twitchchat 0.14.8

interface to the irc-side of twitch's chat system
use std::time::{Duration, Instant};

#[derive(Copy, Clone, Debug)]
pub enum TimeoutState {
    WaitingForPong(Instant),
    Activity(Instant),
    Start,
}

impl TimeoutState {
    pub fn activity() -> Self {
        Self::Activity(Instant::now())
    }

    pub fn waiting_for_pong() -> Self {
        Self::WaitingForPong(Instant::now())
    }
}

pub const WINDOW: Duration = Duration::from_secs(45);
pub const TIMEOUT: Duration = Duration::from_secs(10);
pub const RATE_LIMIT_WINDOW: Duration = Duration::from_secs(30);

cfg_async! {
    pub async fn next_delay() {
        futures_timer::Delay::new(WINDOW).await
    }
}