diff --git a/stempy/reader.cpp b/stempy/reader.cpp index 7e0a0903..c75b8d62 100644 --- a/stempy/reader.cpp +++ b/stempy/reader.cpp @@ -315,6 +315,21 @@ SectorStreamReader::SectorStreamReader(const vector& files, m_streamsIterator = m_streams.begin(); } +SectorStreamReader::SectorStreamReader(uint8_t version) : m_version(version) +{ + // Validate version + switch (m_version) { + case 4: + case 5: + break; + default: + std::ostringstream ss; + ss << "Unsupported version: "; + ss << m_version; + throw invalid_argument(ss.str()); + } +} + SectorStreamReader::~SectorStreamReader() { m_streams.clear(); @@ -781,6 +796,13 @@ SectorStreamThreadedReader::SectorStreamThreadedReader( initNumberOfThreads(); } +SectorStreamThreadedReader::SectorStreamThreadedReader(uint8_t version, + int threads) + : SectorStreamReader(version), m_threads(threads) +{ + initNumberOfThreads(); +} + void SectorStreamThreadedReader::initNumberOfThreads() { if (m_threads < 1) { diff --git a/stempy/reader.h b/stempy/reader.h index 4292a915..997e559c 100644 --- a/stempy/reader.h +++ b/stempy/reader.h @@ -197,6 +197,7 @@ class SectorStreamReader SectorStreamReader(const std::string& path, uint8_t version = 5); SectorStreamReader(const std::vector& files, uint8_t version = 5); + SectorStreamReader(uint8_t version = 5); ~SectorStreamReader(); Block read(); @@ -334,6 +335,7 @@ class SectorStreamThreadedReader : public SectorStreamReader int threads = 0); SectorStreamThreadedReader(const std::vector& files, uint8_t version = 5, int threads = 0); + SectorStreamThreadedReader(uint8_t version = 5, int threads = 0); template std::future readAll(Functor& f); @@ -348,7 +350,7 @@ class SectorStreamThreadedReader : public SectorStreamReader // The futures associated with the worker threads std::vector> m_futures; -private: +protected: // Protect access to frame cache std::mutex m_cacheMutex;