no need to allocate MemRingBuffer separately in OMarkableOutputStream
Change-Id: I80d64f18480a2c078caeaa161f55767f66021253 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139781 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
committed by
Noel Grandin
parent
23118ce68a
commit
5bb826373f
@@ -115,7 +115,7 @@ private:
|
|||||||
Reference< XOutputStream > m_output;
|
Reference< XOutputStream > m_output;
|
||||||
bool m_bValidStream;
|
bool m_bValidStream;
|
||||||
|
|
||||||
std::unique_ptr<MemRingBuffer> m_pBuffer;
|
MemRingBuffer m_aRingBuffer;
|
||||||
map<sal_Int32,sal_Int32,less< sal_Int32 > > m_mapMarks;
|
map<sal_Int32,sal_Int32,less< sal_Int32 > > m_mapMarks;
|
||||||
sal_Int32 m_nCurrentPos;
|
sal_Int32 m_nCurrentPos;
|
||||||
sal_Int32 m_nCurrentMark;
|
sal_Int32 m_nCurrentMark;
|
||||||
@@ -127,7 +127,6 @@ private:
|
|||||||
|
|
||||||
OMarkableOutputStream::OMarkableOutputStream( )
|
OMarkableOutputStream::OMarkableOutputStream( )
|
||||||
: m_bValidStream(false)
|
: m_bValidStream(false)
|
||||||
, m_pBuffer( new MemRingBuffer )
|
|
||||||
, m_nCurrentPos(0)
|
, m_nCurrentPos(0)
|
||||||
, m_nCurrentMark(0)
|
, m_nCurrentMark(0)
|
||||||
{
|
{
|
||||||
@@ -139,14 +138,14 @@ void OMarkableOutputStream::writeBytes(const Sequence< sal_Int8 >& aData)
|
|||||||
if( !m_bValidStream ) {
|
if( !m_bValidStream ) {
|
||||||
throw NotConnectedException();
|
throw NotConnectedException();
|
||||||
}
|
}
|
||||||
if( m_mapMarks.empty() && ( m_pBuffer->getSize() == 0 ) ) {
|
if( m_mapMarks.empty() && ( m_aRingBuffer.getSize() == 0 ) ) {
|
||||||
// no mark and buffer active, simple write through
|
// no mark and buffer active, simple write through
|
||||||
m_output->writeBytes( aData );
|
m_output->writeBytes( aData );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
std::unique_lock guard( m_mutex );
|
std::unique_lock guard( m_mutex );
|
||||||
// new data must be buffered
|
// new data must be buffered
|
||||||
m_pBuffer->writeAt( m_nCurrentPos , aData );
|
m_aRingBuffer.writeAt( m_nCurrentPos , aData );
|
||||||
m_nCurrentPos += aData.getLength();
|
m_nCurrentPos += aData.getLength();
|
||||||
checkMarksAndFlush();
|
checkMarksAndFlush();
|
||||||
}
|
}
|
||||||
@@ -179,7 +178,7 @@ void OMarkableOutputStream::closeOutput()
|
|||||||
// all marks must be cleared and all
|
// all marks must be cleared and all
|
||||||
|
|
||||||
m_mapMarks.clear();
|
m_mapMarks.clear();
|
||||||
m_nCurrentPos = m_pBuffer->getSize();
|
m_nCurrentPos = m_aRingBuffer.getSize();
|
||||||
checkMarksAndFlush();
|
checkMarksAndFlush();
|
||||||
|
|
||||||
m_output->closeOutput();
|
m_output->closeOutput();
|
||||||
@@ -232,7 +231,7 @@ void OMarkableOutputStream::jumpToMark(sal_Int32 nMark)
|
|||||||
void OMarkableOutputStream::jumpToFurthest()
|
void OMarkableOutputStream::jumpToFurthest()
|
||||||
{
|
{
|
||||||
std::unique_lock guard( m_mutex );
|
std::unique_lock guard( m_mutex );
|
||||||
m_nCurrentPos = m_pBuffer->getSize();
|
m_nCurrentPos = m_aRingBuffer.getSize();
|
||||||
checkMarksAndFlush();
|
checkMarksAndFlush();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -328,8 +327,8 @@ void OMarkableOutputStream::checkMarksAndFlush()
|
|||||||
}
|
}
|
||||||
|
|
||||||
Sequence<sal_Int8> seq(nNextFound);
|
Sequence<sal_Int8> seq(nNextFound);
|
||||||
m_pBuffer->readAt( 0 , seq , nNextFound );
|
m_aRingBuffer.readAt( 0 , seq , nNextFound );
|
||||||
m_pBuffer->forgetFromStart( nNextFound );
|
m_aRingBuffer.forgetFromStart( nNextFound );
|
||||||
|
|
||||||
// now write data through to streams
|
// now write data through to streams
|
||||||
m_output->writeBytes( seq );
|
m_output->writeBytes( seq );
|
||||||
|
Reference in New Issue
Block a user