use kernel::{Address, Origin, Seq, TimeMs};
use serde::{Deserialize, Serialize};
use crate::command::Carry;
pub const SESSIONS_MAX: usize = 64;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct SessionsAnswer {
pub room: Address,
pub sessions: Vec<SessionLine>,
pub earlier: u64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct SessionLine {
pub began: Seq,
pub start: SessionStart,
pub runs: u64,
pub last: Seq,
pub at: TimeMs,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub enum SessionStart {
Dispatched,
Opened { carry: Carry, from: Option<Origin> },
}