diff --git a/src/server/mod.rs b/src/server/mod.rs index 517e89b..ff62095 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -7,7 +7,6 @@ use minicbor::data::Type; enum Command { Unknown, - Define(String, Box), Set(String, Box), Push(String, Box), } @@ -41,6 +40,15 @@ fn parse_command(data: &[u8]) -> Result { decoder.array()?; let id = decoder.str()?.to_string(); let value = decode_value(&mut decoder)?; + return Ok(Command::Set(id, value)) + } + if data.starts_with(b"PUSH:") { + let payload = &data[b"PUSH:".len()..]; + let mut decoder = Decoder::new(&payload); + decoder.array()?; + let id = decoder.str()?.to_string(); + let value = decode_value(&mut decoder)?; + return Ok(Command::Push(id, value)) } Ok(Command::Unknown) } @@ -77,10 +85,7 @@ fn decode_value(decoder: &mut Decoder) -> Result, Error> { } Box::new(Line::from(array)) } - // Type::Tag => { - // let tag = decoder.tag()?; - // } - _ => Box::new(false) + _ => { decoder.skip()?; Box::new(false)} }) }