aboutsummaryrefslogtreecommitdiff
path: root/src/util.rs
Commit message (Collapse)AuthorAge
* Assert maximum size for command request and response structsRobin Krahl2019-02-20
| | | | | | The request and response structs for a command should not be bigger than the buffer they are read from or written to. Therefore we add assertions that enforce this property at compile time.
* Use arrays instead of slices where possibleRobin Krahl2019-02-20
| | | | | To increase type safety, we use references to (sized) arrays instead of slices where possible.
* Implement serde::Serialize in enum_u8Robin Krahl2019-02-19
| | | | | | By providing a custom Serialize implementation, we make sure that enum variants are not mapped to their index, but to their discriminant. This allows us to use serde when preparing the response packet.
* Refactor Command::execute_raw into executeRobin Krahl2019-02-19
| | | | | | | The execute_raw method does not have to be part of the Command trait. In order to simplify the Command trait and to make future changes easier, we remove the execute_raw method and replace it with the execute function.
* Refactor command execution into commands moduleRobin Krahl2019-02-18
| | | | | | | | | | | | This patch refactors the command execution. A command is represented by a struct implementing the Command trait. The enum_cmd macro is used to generate a mapping from the CommandId enum to a Command instance and to execute the command. The request and response data is manually converted from and to raw byte slices. As we do not have a standard library, we cannot create a Box<Command> from a CommandId. Instead, we directly delegate the execute method to the corresponding Command.
* Add enum_u8 macro to simplify enum conversionRobin Krahl2019-02-18
We need several enums that map to a u8 value. This patch adds the enum_u8 macro that automatically derives the From and TryFrom macros for an enum to make these conversions easier. As TryFrom is not stable yet, we add our own TryFrom trait.