94 lines
2.8 KiB
C++
94 lines
2.8 KiB
C++
#include "FileDataInfo.h"
|
|
|
|
FileDataInfo::FileDataInfo(cfdp::FileSize &offset, const uint8_t *fileData, size_t fileSize)
|
|
: offset(offset), fileData(fileData), fileSize(fileSize) {}
|
|
|
|
FileDataInfo::FileDataInfo(cfdp::FileSize &offset) : offset(offset) {}
|
|
|
|
void FileDataInfo::setSegmentMetadataFlag(bool enable) {
|
|
if (enable) {
|
|
segmentMetadataFlag = cfdp::SegmentMetadataFlag::PRESENT;
|
|
} else {
|
|
segmentMetadataFlag = cfdp::SegmentMetadataFlag::NOT_PRESENT;
|
|
}
|
|
}
|
|
|
|
size_t FileDataInfo::getSerializedSize(bool largeFile) const {
|
|
size_t sz = 0;
|
|
if (segmentMetadataFlag == cfdp::SegmentMetadataFlag::PRESENT) {
|
|
sz += 1 + segmentMetadataLen;
|
|
}
|
|
if (largeFile) {
|
|
sz += 8;
|
|
} else {
|
|
sz += 4;
|
|
}
|
|
sz += fileSize;
|
|
return sz;
|
|
}
|
|
|
|
cfdp::SegmentMetadataFlag FileDataInfo::getSegmentMetadataFlag() const {
|
|
return this->segmentMetadataFlag;
|
|
}
|
|
|
|
bool FileDataInfo::hasSegmentMetadata() const {
|
|
if (segmentMetadataFlag == cfdp::SegmentMetadataFlag::PRESENT) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
cfdp::RecordContinuationState FileDataInfo::getRecordContinuationState() const {
|
|
return this->recContState;
|
|
}
|
|
|
|
size_t FileDataInfo::getSegmentMetadataLen() const { return segmentMetadataLen; }
|
|
|
|
ReturnValue_t FileDataInfo::addSegmentMetadataInfo(cfdp::RecordContinuationState recContState,
|
|
const uint8_t *segmentMetadata,
|
|
size_t segmentMetadataLen) {
|
|
this->segmentMetadataFlag = cfdp::SegmentMetadataFlag::PRESENT;
|
|
this->recContState = recContState;
|
|
if (segmentMetadataLen > 63) {
|
|
return HasReturnvaluesIF::RETURN_FAILED;
|
|
}
|
|
this->segmentMetadata = segmentMetadata;
|
|
this->segmentMetadataLen = segmentMetadataLen;
|
|
return HasReturnvaluesIF::RETURN_OK;
|
|
}
|
|
|
|
const uint8_t *FileDataInfo::getFileData(size_t *fileSize) const {
|
|
if (fileSize != nullptr) {
|
|
*fileSize = this->fileSize;
|
|
}
|
|
return fileData;
|
|
}
|
|
|
|
const uint8_t *FileDataInfo::getSegmentMetadata(size_t *segmentMetadataLen) {
|
|
if (segmentMetadataLen != nullptr) {
|
|
*segmentMetadataLen = this->segmentMetadataLen;
|
|
}
|
|
return segmentMetadata;
|
|
}
|
|
|
|
cfdp::FileSize &FileDataInfo::getOffset() { return offset; }
|
|
|
|
void FileDataInfo::setRecordContinuationState(cfdp::RecordContinuationState recContState) {
|
|
this->recContState = recContState;
|
|
}
|
|
|
|
void FileDataInfo::setSegmentMetadataLen(size_t len) { this->segmentMetadataLen = len; }
|
|
|
|
void FileDataInfo::setSegmentMetadata(const uint8_t *ptr) { this->segmentMetadata = ptr; }
|
|
|
|
void FileDataInfo::setFileData(const uint8_t *fileData, size_t fileSize) {
|
|
this->fileData = fileData;
|
|
this->fileSize = fileSize;
|
|
}
|
|
|
|
cfdp::SegmentationControl FileDataInfo::getSegmentationControl() const { return segCtrl; }
|
|
|
|
void FileDataInfo::setSegmentationControl(cfdp::SegmentationControl segCtrl) {
|
|
this->segCtrl = segCtrl;
|
|
}
|