Lines
0 %
Functions
use std::str::FromStr;
use crate::{
commands::{CommandRequest, RequestParserError, empty_command_response},
request_tokenizer::RequestTokenizer,
types::SubSystem,
};
pub struct IdleRequest(Option<Vec<SubSystem>>);
impl IdleRequest {
pub fn new(subsystems: Option<Vec<SubSystem>>) -> Self {
IdleRequest(subsystems)
}
impl CommandRequest for IdleRequest {
type Response = IdleResponse;
const COMMAND: &'static str = "idle";
const MIN_ARGS: u32 = 0;
const MAX_ARGS: Option<u32> = None;
fn serialize(&self) -> String {
match &self.0 {
Some(subsystems) => {
let subsystems_str = subsystems
.iter()
.map(|subsystem| subsystem.to_string())
.collect::<Vec<_>>()
.join(",");
format!("{} {}\n", Self::COMMAND, subsystems_str)
None => Self::COMMAND.to_string() + "\n",
fn parse(parts: RequestTokenizer<'_>) -> Result<Self, RequestParserError> {
let mut parts = parts;
let result = parts.next().map_or(Ok(None), |subsystems| {
let subsystems = subsystems
.split(',')
.map(|subsystem| SubSystem::from_str(subsystem).unwrap())
.collect();
Ok(Some(subsystems))
});
result.map(IdleRequest)
empty_command_response!(Idle);