diff --git a/include/E57Format.h b/include/E57Format.h index 8123bf4..21edff3 100644 --- a/include/E57Format.h +++ b/include/E57Format.h @@ -485,7 +485,7 @@ public: // Iterators CompressedVectorWriter writer( std::vector &sbufs ); - CompressedVectorReader reader( const std::vector &dbufs ); + CompressedVectorReader reader( const std::vector &dbufs, bool allowParallel = false ); // Up/Down cast conversion operator Node() const; diff --git a/src/CompressedVectorNode.cpp b/src/CompressedVectorNode.cpp index 9de177d..fff1014 100644 --- a/src/CompressedVectorNode.cpp +++ b/src/CompressedVectorNode.cpp @@ -474,7 +474,7 @@ prototype. It is not an error to create a CompressedVectorReader for an empty Co @see CompressedVectorReader, SourceDestBuffer, CompressedVectorNode::CompressedVectorNode, CompressedVectorNode::prototype */ -CompressedVectorReader CompressedVectorNode::reader( const std::vector &dbufs ) +CompressedVectorReader CompressedVectorNode::reader( const std::vector &dbufs, bool allowParallel ) { - return CompressedVectorReader( impl_->reader( dbufs ) ); + return CompressedVectorReader( impl_->reader( dbufs, allowParallel ) ); } diff --git a/src/CompressedVectorNodeImpl.cpp b/src/CompressedVectorNodeImpl.cpp index 3f344ba..9cb271c 100644 --- a/src/CompressedVectorNodeImpl.cpp +++ b/src/CompressedVectorNodeImpl.cpp @@ -318,7 +318,8 @@ namespace e57 } std::shared_ptr CompressedVectorNodeImpl::reader( - std::vector dbufs ) + std::vector dbufs, + bool allowParallel ) { checkImageFileOpen( __FILE__, __LINE__, static_cast( __FUNCTION__ ) ); @@ -332,7 +333,7 @@ namespace e57 " writerCount=" + toString( destImageFile->writerCount() ) + " readerCount=" + toString( destImageFile->readerCount() ) ); } - if ( destImageFile->readerCount() > 0 ) + if ( !allowParallel && destImageFile->readerCount() > 0 ) { throw E57_EXCEPTION2( ErrorTooManyReaders, "fileName=" + destImageFile->fileName() + diff --git a/src/CompressedVectorNodeImpl.h b/src/CompressedVectorNodeImpl.h index 82887bf..8203b2b 100644 --- a/src/CompressedVectorNodeImpl.h +++ b/src/CompressedVectorNodeImpl.h @@ -59,7 +59,7 @@ namespace e57 /// Iterator constructors std::shared_ptr writer( std::vector sbufs ); - std::shared_ptr reader( std::vector dbufs ); + std::shared_ptr reader( std::vector dbufs, bool allowParallel ); int64_t getRecordCount() const {