diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-12-18 12:54:51 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-12-18 14:25:56 +0100 |
commit | d2ebcd853be89255451c269a463619f56987d0ed (patch) | |
tree | 4786a8db15e78f159d010c23394a8444a244965c /io | |
parent | ca3e55b2e0f316d900e0e4cc29a7e08252cb859c (diff) |
unique_ptr->optional in OMarkableInputStream
Change-Id: I2d3d761043068017cc5da823ec6c0fcda2432e6d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160906
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'io')
-rw-r--r-- | io/source/stm/omark.cxx | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/io/source/stm/omark.cxx b/io/source/stm/omark.cxx index 3e6127d7310e..3507eb0a0729 100644 --- a/io/source/stm/omark.cxx +++ b/io/source/stm/omark.cxx @@ -20,6 +20,7 @@ #include <map> #include <memory> +#include <optional> #include <com/sun/star/io/BufferSizeExceededException.hpp> #include <com/sun/star/io/NotConnectedException.hpp> @@ -422,7 +423,7 @@ private: Reference< XInputStream > m_input; bool m_bValidStream; - std::unique_ptr<MemRingBuffer> m_pBuffer; + std::optional<MemRingBuffer> m_oBuffer; std::map<sal_Int32,sal_Int32,std::less< sal_Int32 > > m_mapMarks; sal_Int32 m_nCurrentPos; sal_Int32 m_nCurrentMark; @@ -437,7 +438,7 @@ OMarkableInputStream::OMarkableInputStream() , m_nCurrentPos(0) , m_nCurrentMark(0) { - m_pBuffer.reset( new MemRingBuffer ); + m_oBuffer.emplace(); } @@ -453,7 +454,7 @@ sal_Int32 OMarkableInputStream::readBytes(Sequence< sal_Int8 >& aData, sal_Int32 *this ); } std::unique_lock guard( m_mutex ); - if( m_mapMarks.empty() && ! m_pBuffer->getSize() ) { + if( m_mapMarks.empty() && ! m_oBuffer->getSize() ) { // normal read ! nBytesRead = m_input->readBytes( aData, nBytesToRead ); } @@ -462,22 +463,22 @@ sal_Int32 OMarkableInputStream::readBytes(Sequence< sal_Int8 >& aData, sal_Int32 sal_Int32 nRead; // read enough bytes into buffer - if( m_pBuffer->getSize() - m_nCurrentPos < nBytesToRead ) { - sal_Int32 nToRead = nBytesToRead - ( m_pBuffer->getSize() - m_nCurrentPos ); + if( m_oBuffer->getSize() - m_nCurrentPos < nBytesToRead ) { + sal_Int32 nToRead = nBytesToRead - ( m_oBuffer->getSize() - m_nCurrentPos ); nRead = m_input->readBytes( aData , nToRead ); OSL_ASSERT( aData.getLength() == nRead ); - m_pBuffer->writeAt( m_pBuffer->getSize() , aData ); + m_oBuffer->writeAt( m_oBuffer->getSize() , aData ); if( nRead < nToRead ) { nBytesToRead = nBytesToRead - (nToRead-nRead); } } - OSL_ASSERT( m_pBuffer->getSize() - m_nCurrentPos >= nBytesToRead ); + OSL_ASSERT( m_oBuffer->getSize() - m_nCurrentPos >= nBytesToRead ); - m_pBuffer->readAt( m_nCurrentPos , aData , nBytesToRead ); + m_oBuffer->readAt( m_nCurrentPos , aData , nBytesToRead ); m_nCurrentPos += nBytesToRead; nBytesRead = nBytesToRead; @@ -498,14 +499,14 @@ sal_Int32 OMarkableInputStream::readSomeBytes(Sequence< sal_Int8 >& aData, sal_I } std::unique_lock guard( m_mutex ); - if( m_mapMarks.empty() && ! m_pBuffer->getSize() ) { + if( m_mapMarks.empty() && ! m_oBuffer->getSize() ) { // normal read ! nBytesRead = m_input->readSomeBytes( aData, nMaxBytesToRead ); } else { // read from buffer sal_Int32 nRead = 0; - sal_Int32 nInBuffer = m_pBuffer->getSize() - m_nCurrentPos; + sal_Int32 nInBuffer = m_oBuffer->getSize() - m_nCurrentPos; sal_Int32 nAdditionalBytesToRead = std::min<sal_Int32>(nMaxBytesToRead-nInBuffer,m_input->available()); nAdditionalBytesToRead = std::max<sal_Int32>(0 , nAdditionalBytesToRead ); @@ -519,13 +520,13 @@ sal_Int32 OMarkableInputStream::readSomeBytes(Sequence< sal_Int8 >& aData, sal_I if( nRead ) { aData.realloc( nRead ); - m_pBuffer->writeAt( m_pBuffer->getSize() , aData ); + m_oBuffer->writeAt( m_oBuffer->getSize() , aData ); } nBytesRead = std::min( nMaxBytesToRead , nInBuffer + nRead ); // now take everything from buffer ! - m_pBuffer->readAt( m_nCurrentPos , aData , nBytesRead ); + m_oBuffer->readAt( m_nCurrentPos , aData , nBytesRead ); m_nCurrentPos += nBytesRead; } @@ -558,7 +559,7 @@ sal_Int32 OMarkableInputStream::available() } std::unique_lock guard( m_mutex ); - sal_Int32 nAvail = m_input->available() + ( m_pBuffer->getSize() - m_nCurrentPos ); + sal_Int32 nAvail = m_input->available() + ( m_oBuffer->getSize() - m_nCurrentPos ); return nAvail; } @@ -578,7 +579,7 @@ void OMarkableInputStream::closeInput() setPredecessor( Reference< XConnectable > () ); setSuccessor( Reference< XConnectable >() ); - m_pBuffer.reset(); + m_oBuffer.reset(); m_nCurrentPos = 0; m_nCurrentMark = 0; } @@ -627,7 +628,7 @@ void OMarkableInputStream::jumpToMark(sal_Int32 nMark) void OMarkableInputStream::jumpToFurthest() { std::unique_lock guard( m_mutex ); - m_nCurrentPos = m_pBuffer->getSize(); + m_nCurrentPos = m_oBuffer->getSize(); checkMarksAndFlush(); } @@ -725,7 +726,7 @@ void OMarkableInputStream::checkMarksAndFlush() mark.second -= nNextFound; } - m_pBuffer->forgetFromStart( nNextFound ); + m_oBuffer->forgetFromStart( nNextFound ); } else { |