fsfw/src/fsfw/cfdp/handler/PutRequest.h

40 lines
1.1 KiB
C++

#pragma once
#include <optional>
#include <vector>
#include "fsfw/cfdp/VarLenFields.h"
#include "fsfw/cfdp/tlv/FilestoreRequestTlv.h"
#include "fsfw/cfdp/tlv/MessageToUserTlv.h"
namespace cfdp {
class PutRequest : public SerializeIF {
public:
EntityId destId;
bool metadataOnly = true;
char* destName = nullptr;
uint64_t destNameSize = 0;
char* sourceName = nullptr;
uint64_t sourceNameSize = 0;
TransmissionMode transmissionMode = TransmissionMode::UNACKNOWLEDGED;
bool closureRequested = false;
[[nodiscard]] ReturnValue_t serialize(uint8_t** buffer, size_t* size, size_t maxSize,
Endianness streamEndianness) const override;
ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size,
Endianness streamEndianness) override;
[[nodiscard]] size_t getSerializedSize() const override;
[[nodiscard]] bool isMetadataOnly() const;
private:
size_t msgsToUsersTotalSize = 0;
uint32_t numOfMsgsToUser = 0;
uint8_t* messagesToUserStartPtr = nullptr;
size_t fsRequestsTotalSize = 0;
uint32_t numOfFsRequests = 0;
uint8_t* fsRequest = nullptr;
};
} // namespace cfdp