use crate::{Context, Message, Request, SendError};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TimerAction {
Debug,
SetTimer(u64),
}
impl Into<Vec<u8>> for TimerAction {
fn into(self) -> Vec<u8> {
serde_json::to_vec(&self).unwrap()
}
}
pub fn set_timer(duration: u64, context: Option<Context>) {
let mut request = Request::to(("our", "timer", "distro", "sys"))
.body(TimerAction::SetTimer(duration))
.expects_response((duration / 1000) + 1);
if let Some(context) = context {
request = request.context(context);
}
request.send().unwrap();
}
pub fn set_and_await_timer(duration: u64) -> Result<Message, SendError> {
Request::to(("our", "timer", "distro", "sys"))
.body(TimerAction::SetTimer(duration))
.send_and_await_response((duration / 1000) + 1)
.unwrap()
}