From 9176ef187227ffb56c249c5f321cd1bf50d4cfcc Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 22 Nov 2022 17:05:02 +1100 Subject: Add cbor wrapper, and chunk streaming util --- src/cbor/include/cbor_decoder.hpp | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/cbor/include/cbor_decoder.hpp (limited to 'src/cbor/include/cbor_decoder.hpp') diff --git a/src/cbor/include/cbor_decoder.hpp b/src/cbor/include/cbor_decoder.hpp new file mode 100644 index 00000000..249db9cc --- /dev/null +++ b/src/cbor/include/cbor_decoder.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include +namespace cbor { + + class ArrayDecoder { + public: + static auto Create(uint8_t *buffer, size_t buffer_len) -> cpp::result, CborError>; + + auto ParseString() -> cpp::result; + auto ParseUnsigned() -> cpp::result; + auto ParseSigned() -> cpp::result; + + auto Failed() -> CborError { return error_; } + + ArrayDecoder(const ArrayDecoder&) = delete; + ArrayDecoder& operator=(const ArrayDecoder&) = delete; + private: + CborParser parser_; + CborValue root_; + + CborValue it_; + CborError error_ = CborNoError; + }; + + class MapDecoder { + public: + static auto Create(uint8_t *buffer, size_t buffer_len) -> cpp::result, CborError>; + + auto FindString(const std::string &key) -> std::optional; + auto FindUnsigned(const std::string &key) -> std::optional; + auto FindSigned(const std::string &key) -> std::optional; + + auto Failed() -> CborError { return error_; } + + MapDecoder(const MapDecoder&) = delete; + MapDecoder& operator=(const MapDecoder&) = delete; + private: + CborParser parser_; + CborValue root_; + + CborValue it_; + CborError error_ = CborNoError; + }; + + +} // namespace cbor -- cgit v1.2.3