11#include <xdelta3/xdelta3.h>
39 Differential(
void* __restrict outputDataBuffer =
nullptr,
const size_t outputDataBufferSize = std::numeric_limits<uint32_t>::max(),
40 const void* __restrict referenceDataBuffer =
nullptr,
const size_t referenceDataBufferSize = std::numeric_limits<uint32_t>::max(),
const bool useZlib =
false)
41 : serializer::
Base(outputDataBuffer, outputDataBufferSize)
42 , _referenceDataBuffer((const uint8_t*)referenceDataBuffer)
43 , _referenceDataBufferSize(referenceDataBufferSize)
50 __JAFFAR_COMMON__INLINE__
void pushContiguous(
const void*
const __restrict inputData =
nullptr,
const size_t inputDataSize = 0)
override
58 if (_referenceDataBufferPos + inputDataSize > _referenceDataBufferSize)
59 JAFFAR_THROW_RUNTIME(
"[Error] Maximum reference data position exceeded on contiguous deserialization (%lu + %lu > %lu)", _referenceDataBufferPos, inputDataSize,
60 _referenceDataBufferSize);
66 _referenceDataBufferPos += inputDataSize;
69 __JAFFAR_COMMON__INLINE__
void push(
const void*
const __restrict inputData,
const size_t inputDataSize)
override
75 if (_referenceDataBufferPos + inputDataSize > _referenceDataBufferSize)
76 JAFFAR_THROW_RUNTIME(
"[Error] Differential compression size exceeds reference data buffer size (%lu + %lu > %lu)", _referenceDataBufferPos, inputDataSize,
77 _referenceDataBufferSize);
83 const size_t differentialBufferSize =
sizeof(usize_t);
106 _differentialBytesCount += *diffCount;
109 _referenceDataBufferPos += inputDataSize;
132 const uint8_t* __restrict
const _referenceDataBuffer;
137 const size_t _referenceDataBufferSize;
142 size_t _referenceDataBufferPos = 0;
147 size_t _differentialBytesCount = 0;
Definition serializers/base.hpp:24
size_t _outputDataBufferPos
Definition serializers/base.hpp:84
const size_t _outputDataBufferSize
Definition serializers/base.hpp:79
uint8_t *__restrict const _outputDataBuffer
Definition serializers/base.hpp:74
Definition serializers/differential.hpp:28
__JAFFAR_COMMON__INLINE__ void pushContiguous(const void *const __restrict inputData=nullptr, const size_t inputDataSize=0) override
Definition serializers/differential.hpp:50
size_t getReferenceDataBufferPos() const
Definition serializers/differential.hpp:117
__JAFFAR_COMMON__INLINE__ void push(const void *const __restrict inputData, const size_t inputDataSize) override
Definition serializers/differential.hpp:69
size_t getDifferentialBytesCount() const
Definition serializers/differential.hpp:126
Differential(void *__restrict outputDataBuffer=nullptr, const size_t outputDataBufferSize=std::numeric_limits< uint32_t >::max(), const void *__restrict referenceDataBuffer=nullptr, const size_t referenceDataBufferSize=std::numeric_limits< uint32_t >::max(), const bool useZlib=false)
Definition serializers/differential.hpp:39
#define JAFFAR_THROW_RUNTIME(...)
Definition exceptions.hpp:22
Contains the base class for the data serializers.