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
56 if (_referenceDataBufferPos + inputDataSize > _referenceDataBufferSize)
57 JAFFAR_THROW_RUNTIME(
"[Error] Maximum reference data position exceeded on contiguous deserialization (%lu + %lu > %lu)", _referenceDataBufferPos, inputDataSize,
58 _referenceDataBufferSize);
67 _referenceDataBufferPos += inputDataSize;
70 __JAFFAR_COMMON_INLINE__
void push(
const void*
const __restrict inputData,
const size_t inputDataSize)
override
76 if (_referenceDataBufferPos + inputDataSize > _referenceDataBufferSize)
77 JAFFAR_THROW_RUNTIME(
"[Error] Differential compression size exceeds reference data buffer size (%lu + %lu > %lu)", _referenceDataBufferPos, inputDataSize,
78 _referenceDataBufferSize);
84 const size_t differentialBufferSize =
sizeof(usize_t);
107 _differentialBytesCount += *diffCount;
110 _referenceDataBufferPos += inputDataSize;
133 const uint8_t* __restrict
const _referenceDataBuffer;
138 const size_t _referenceDataBufferSize;
143 size_t _referenceDataBufferPos = 0;
148 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
size_t getReferenceDataBufferPos() const
Definition serializers/differential.hpp:118
__JAFFAR_COMMON_INLINE__ void push(const void *const __restrict inputData, const size_t inputDataSize) override
Definition serializers/differential.hpp:70
__JAFFAR_COMMON_INLINE__ void pushContiguous(const void *const __restrict inputData=nullptr, const size_t inputDataSize=0) override
Definition serializers/differential.hpp:50
size_t getDifferentialBytesCount() const
Definition serializers/differential.hpp:127
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.