Fix decode bug
This commit is contained in:
1 parent
206a0c7c82
commit
4c2cd7130b
1 file changed
+10
-5
+10
-5
@@ -7,7 +7,6 @@ use minicbor::data::Type;
|
|||||||
|
|
||||||
enum Command {
|
enum Command {
|
||||||
Unknown,
|
Unknown,
|
||||||
Define(String, Box<dyn Display>),
|
|
||||||
Set(String, Box<dyn Display>),
|
Set(String, Box<dyn Display>),
|
||||||
Push(String, Box<dyn Display>),
|
Push(String, Box<dyn Display>),
|
||||||
}
|
}
|
||||||
@@ -41,6 +40,15 @@ fn parse_command(data: &[u8]) -> Result<Command, Error> {
|
|||||||
decoder.array()?;
|
decoder.array()?;
|
||||||
let id = decoder.str()?.to_string();
|
let id = decoder.str()?.to_string();
|
||||||
let value = decode_value(&mut decoder)?;
|
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)
|
Ok(Command::Unknown)
|
||||||
}
|
}
|
||||||
@@ -77,10 +85,7 @@ fn decode_value(decoder: &mut Decoder) -> Result<Box<dyn Display>, Error> {
|
|||||||
}
|
}
|
||||||
Box::new(Line::from(array))
|
Box::new(Line::from(array))
|
||||||
}
|
}
|
||||||
// Type::Tag => {
|
_ => { decoder.skip()?; Box::new(false)}
|
||||||
// let tag = decoder.tag()?;
|
|
||||||
// }
|
|
||||||
_ => Box::new(false)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user