23#include <com/sun/star/uno/Sequence.hxx>
25#include <com/sun/star/io/BufferSizeExceededException.hpp>
40 readAt(0, seq , nBufferLen);
60 sal_Int32 nNewLen = 1;
62 while( nMinSize > nNewLen ) {
63 nNewLen = nNewLen << 1;
74 auto p =
static_cast<sal_Int8*
>(std::realloc(
m_p, nNewLen));
76 throw css::io::BufferSizeExceededException(
77 "MemRingBuffer::resizeBuffer BufferSizeExceededException");
93 throw css::io::BufferSizeExceededException(
94 "MemRingBuffer::readAt BufferSizeExceededException");
102 seq.realloc( nBytesToRead );
106 memcpy( seq.getArray() , &(
m_p[nStartReadingPos]) , nDeltaLen );
107 memcpy( &(seq.getArray()[nDeltaLen]),
m_p , nBytesToRead - nDeltaLen );
110 memcpy( seq.getArray() , &(
m_p[nStartReadingPos]) , nBytesToRead );
118 const sal_Int32 nLen = seq.getLength();
120 if( nPos < 0 || nPos > std::numeric_limits< sal_Int32 >::max() - nLen )
122 throw css::io::BufferSizeExceededException(
123 "MemRingBuffer::writeAt BufferSizeExceededException");
136 if(
const sal_Int32 nBufferRestLen =
m_nBufferLen-nStartWritingIndex; nLen > nBufferRestLen ) {
138 memcpy( &(
m_p[nStartWritingIndex]) , seq.getConstArray(), nBufferRestLen );
139 memcpy(
m_p , &( seq.getConstArray()[nBufferRestLen] ), nLen - nBufferRestLen );
144 memcpy( &(
m_p[nStartWritingIndex]), seq.getConstArray() , nLen );
159 throw css::io::BufferSizeExceededException(
160 "MemRingBuffer::forgetFromStart BufferSizeExceededException");
void read(Sequence< sal_Int8 > &, sal_Int32 nBytesToRead)
sal_Int32 getSize() const noexcept
void skip(sal_Int32 nBytesToSkip)
void write(const Sequence< sal_Int8 > &)
sal_Int32 m_nOccupiedBuffer
sal_Int32 getSize() const noexcept
void checkInvariants() const
void forgetFromStart(sal_Int32 nBytesToForget)
void readAt(sal_Int32 nPos, Sequence< sal_Int8 > &, sal_Int32 nBytesToRead) const
void writeAt(sal_Int32 nPos, const Sequence< sal_Int8 > &)
void resizeBuffer(sal_Int32 nMinSize)