Files
Jungfraujoch/frame_serialize/JFJochFrameSerializer.h

34 lines
1002 B
C++

// Copyright (2019-2022) Paul Scherrer Institute
// SPDX-License-Identifier: GPL-3.0-or-later
#ifndef JUNGFRAUJOCH_JFJOCHFRAMESERIALIZER_H
#define JUNGFRAUJOCH_JFJOCHFRAMESERIALIZER_H
#include <vector>
#include <cstdint>
#include <cstddef>
#include "../common/SpotToSave.h"
#include "StartMessage.h"
#include "EndMessage.h"
#include "ImageMessage.h"
class JFJochFrameSerializer {
std::vector<uint8_t> buffer;
size_t max_buffer_size;
size_t curr_size;
public:
explicit JFJochFrameSerializer(size_t buffer_size);
[[nodiscard]] const uint8_t *GetBuffer() const;
[[nodiscard]] uint8_t *GetImageAppendLocation();
[[nodiscard]] size_t GetBufferSize() const;
[[nodiscard]] size_t GetRemainingBuffer() const;
void SerializeSequenceStart(const StartMessage& message);
void SerializeSequenceEnd(const EndMessage& message);
void SerializeImage(const DataMessage& message);
void AppendImage(size_t image_size);
};
#endif //JUNGFRAUJOCH_JFJOCHFRAMESERIALIZER_H