JFJochFrameSerializer: for the buffer return pointer + size, not vector reference (allows for more flexibility)

This commit is contained in:
2023-05-01 19:01:12 +02:00
parent 60d95dc0d7
commit af2ed525a0
15 changed files with 50 additions and 76 deletions

View File

@@ -52,9 +52,9 @@ void CBOR_ENC_COMPRESSED(CborEncoder &encoder,
const void *image, size_t image_size,
CompressionAlgorithm algorithm,
size_t elem_size) {
if (algorithm == CompressionAlgorithm::NO_COMPRESSION) {
if (algorithm == CompressionAlgorithm::NO_COMPRESSION)
cborErr(cbor_encode_byte_string(&encoder, (uint8_t *) image, image_size));
} else {
else {
cbor_encode_tag(&encoder, TagDECTRISCompression);
CborEncoder arrayEncoder;
@@ -288,16 +288,19 @@ inline void CBOR_ENC_USER_DATA(CborEncoder &encoder, const StartMessage& message
}
JFJochFrameSerializer::JFJochFrameSerializer(size_t in_max_buffer_size) :
max_buffer_size(in_max_buffer_size) {
buffer.reserve(in_max_buffer_size);
max_buffer_size(in_max_buffer_size), curr_size(0) {
buffer.resize(max_buffer_size);
}
const std::vector<uint8_t> &JFJochFrameSerializer::GetBuffer() const {
return buffer;
const uint8_t *JFJochFrameSerializer::GetBuffer() const {
return buffer.data();
}
size_t JFJochFrameSerializer::GetBufferSize() const {
return curr_size;
}
void JFJochFrameSerializer::SerializeSequenceStart(const StartMessage& message) {
buffer.resize(max_buffer_size);
CborEncoder encoder, mapEncoder;
cbor_encoder_init(&encoder, buffer.data(), buffer.size(), 0);
@@ -342,13 +345,10 @@ void JFJochFrameSerializer::SerializeSequenceStart(const StartMessage& message)
CBOR_ENC_CHANNELS(mapEncoder, "channels", message.channels);
cborErr(cbor_encoder_close_container(&encoder, &mapEncoder));
buffer.resize(cbor_encoder_get_buffer_size(&encoder, buffer.data()));
curr_size = cbor_encoder_get_buffer_size(&encoder, buffer.data());
}
void JFJochFrameSerializer::SerializeSequenceEnd(const EndMessage& message) {
buffer.resize(max_buffer_size);
CborEncoder encoder, mapEncoder;
cbor_encoder_init(&encoder, buffer.data(), buffer.size(), 0);
cborErr(cbor_encode_tag(&encoder,CborSignatureTag ));
@@ -365,12 +365,10 @@ void JFJochFrameSerializer::SerializeSequenceEnd(const EndMessage& message) {
cborErr(cbor_encoder_close_container(&encoder, &mapEncoder));
buffer.resize(cbor_encoder_get_buffer_size(&encoder, buffer.data()));
curr_size = cbor_encoder_get_buffer_size(&encoder, buffer.data());
}
void JFJochFrameSerializer::SerializeImage(const DataMessage& message) {
buffer.resize(max_buffer_size);
CborEncoder encoder, mapEncoder, userDataMapEncoder;
cbor_encoder_init(&encoder, buffer.data(), buffer.size(), 0);
@@ -397,5 +395,5 @@ void JFJochFrameSerializer::SerializeImage(const DataMessage& message) {
cborErr(cbor_encoder_close_container(&encoder, &mapEncoder));
buffer.resize(cbor_encoder_get_buffer_size(&encoder, buffer.data()));
curr_size = cbor_encoder_get_buffer_size(&encoder, buffer.data());
}