use crate::{models::gateway::commands::Command, runtime};
use futures::{channel::mpsc::UnboundedSender, sink::SinkExt};
use std::time::Duration;
pub(crate) async fn heartbeater(heartbeat_interval: u64, mut to_gateway: UnboundedSender<Command>) {
loop {
runtime::sleep(Duration::from_millis(heartbeat_interval)).await;
if to_gateway.is_closed() {
log::info!("Old heartbeater exited");
break;
}
let heartbeat = Command::new_heartbeat();
if let Err(e) = to_gateway.send(heartbeat).await {
log::error!("Error when sending Heartbeat: {}", e);
};
}
}