From 2c32402da583cbd0a091a08308237592679c05c4 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 13 May 2013 03:10:09 +0200 Subject: [PATCH] package kit: internalize BPackageDataReader It is no longer public (or even private) API. BPackageDataReaderFactory returns a BAbstractBufferedDataReader instead. The advantage is that the latter doesn't have hpkg format specific dependencies. --- headers/os/package/hpkg/PackageDataReader.h | 20 +-------- .../os/package/hpkg/v1/PackageDataReader.h | 20 +-------- .../nodes/UnpackingAttributeCookie.cpp | 6 +-- .../packagefs/package/GlobalFactory.cpp | 2 +- .../packagefs/package/GlobalFactory.h | 4 +- .../packagefs/package/PackageFile.cpp | 12 +++--- src/bin/package/command_extract.cpp | 6 +-- src/kits/package/hpkg/PackageDataReader.cpp | 41 +++++++++--------- src/kits/package/hpkg/PackageWriterImpl.cpp | 6 +-- .../package/hpkg/RepositoryWriterImpl.cpp | 6 +-- .../package/hpkg/v1/PackageDataReaderV1.cpp | 43 +++++++++---------- 11 files changed, 64 insertions(+), 102 deletions(-) diff --git a/headers/os/package/hpkg/PackageDataReader.h b/headers/os/package/hpkg/PackageDataReader.h index a687afb97c..8a4e5a89ae 100644 --- a/headers/os/package/hpkg/PackageDataReader.h +++ b/headers/os/package/hpkg/PackageDataReader.h @@ -15,27 +15,9 @@ namespace BHPKG { class BBufferCache; -class BDataOutput; class BPackageData; -class BPackageDataReader : public BDataReader { -public: - BPackageDataReader(BDataReader* dataReader); - virtual ~BPackageDataReader(); - - virtual status_t Init(const BPackageData& data) = 0; - - virtual status_t ReadData(off_t offset, void* buffer, - size_t size); - virtual status_t ReadDataToOutput(off_t offset, size_t size, - BDataOutput* output) = 0; - -protected: - BDataReader* fDataReader; -}; - - class BPackageDataReaderFactory { public: BPackageDataReaderFactory( @@ -43,7 +25,7 @@ public: status_t CreatePackageDataReader(BDataReader* dataReader, const BPackageData& data, - BPackageDataReader*& _reader); + BAbstractBufferedDataReader*& _reader); private: BBufferCache* fBufferCache; diff --git a/headers/os/package/hpkg/v1/PackageDataReader.h b/headers/os/package/hpkg/v1/PackageDataReader.h index 79dbf02936..15d94f6d71 100644 --- a/headers/os/package/hpkg/v1/PackageDataReader.h +++ b/headers/os/package/hpkg/v1/PackageDataReader.h @@ -15,7 +15,6 @@ namespace BHPKG { class BBufferCache; -class BDataOutput; namespace V1 { @@ -24,23 +23,6 @@ namespace V1 { class BPackageData; -class BPackageDataReader : public BDataReader { -public: - BPackageDataReader(BDataReader* dataReader); - virtual ~BPackageDataReader(); - - virtual status_t Init(const BPackageData& data) = 0; - - virtual status_t ReadData(off_t offset, void* buffer, - size_t size); - virtual status_t ReadDataToOutput(off_t offset, size_t size, - BDataOutput* output) = 0; - -protected: - BDataReader* fDataReader; -}; - - class BPackageDataReaderFactory { public: BPackageDataReaderFactory( @@ -48,7 +30,7 @@ public: status_t CreatePackageDataReader(BDataReader* dataReader, const BPackageData& data, - BPackageDataReader*& _reader); + BAbstractBufferedDataReader*& _reader); private: BBufferCache* fBufferCache; diff --git a/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingAttributeCookie.cpp b/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingAttributeCookie.cpp index 8809199fae..4a52d07516 100644 --- a/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingAttributeCookie.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingAttributeCookie.cpp @@ -31,13 +31,13 @@ static status_t read_package_data(const BPackageData& data, BDataReader* dataReader, off_t offset, void* buffer, size_t* bufferSize) { - // create a BPackageDataReader - BPackageDataReader* reader; + // create a PackageDataReader + BAbstractBufferedDataReader* reader; status_t error = GlobalFactory::Default()->CreatePackageDataReader( dataReader, data, reader); if (error != B_OK) RETURN_ERROR(error); - ObjectDeleter readerDeleter(reader); + ObjectDeleter readerDeleter(reader); // check the offset if (offset < 0 || (uint64)offset > data.UncompressedSize()) diff --git a/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.cpp b/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.cpp index 751874cad7..50952bf295 100644 --- a/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.cpp @@ -67,7 +67,7 @@ GlobalFactory::Default() status_t GlobalFactory::CreatePackageDataReader(BDataReader* dataReader, - const BPackageData& data, BPackageDataReader*& _reader) + const BPackageData& data, BAbstractBufferedDataReader*& _reader) { return fPackageDataReaderFactory.CreatePackageDataReader(dataReader, data, _reader); diff --git a/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.h b/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.h index 546d8be0a8..5b0a85015d 100644 --- a/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.h +++ b/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.h @@ -14,7 +14,7 @@ using BPackageKit::BHPKG::BDataReader; using BPackageKit::BHPKG::BPackageData; -using BPackageKit::BHPKG::BPackageDataReader; +using BPackageKit::BHPKG::BAbstractBufferedDataReader; using BPackageKit::BHPKG::BPackageDataReaderFactory; using BPackageKit::BHPKG::B_HPKG_DEFAULT_DATA_CHUNK_SIZE_ZLIB; @@ -31,7 +31,7 @@ public: status_t CreatePackageDataReader(BDataReader* dataReader, const BPackageData& data, - BPackageDataReader*& _reader); + BAbstractBufferedDataReader*& _reader); private: status_t _Init(); diff --git a/src/add-ons/kernel/file_systems/packagefs/package/PackageFile.cpp b/src/add-ons/kernel/file_systems/packagefs/package/PackageFile.cpp index 3074257c90..a225b1bef6 100644 --- a/src/add-ons/kernel/file_systems/packagefs/package/PackageFile.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/package/PackageFile.cpp @@ -78,7 +78,7 @@ struct PackageFile::DataAccessor { if (fDataReader == NULL) RETURN_ERROR(B_NO_MEMORY); - // create a BPackageDataReader + // create a PackageDataReader status_t error = GlobalFactory::Default()->CreatePackageDataReader( fDataReader, *fData, fReader); if (error != B_OK) @@ -127,11 +127,11 @@ struct PackageFile::DataAccessor { } private: - mutex fLock; - BPackageData* fData; - BDataReader* fDataReader; - BPackageDataReader* fReader; - void* fFileCache; + mutex fLock; + BPackageData* fData; + BDataReader* fDataReader; + BAbstractBufferedDataReader* fReader; + void* fFileCache; }; diff --git a/src/bin/package/command_extract.cpp b/src/bin/package/command_extract.cpp index 25311b6152..215a383e09 100644 --- a/src/bin/package/command_extract.cpp +++ b/src/bin/package/command_extract.cpp @@ -592,13 +592,13 @@ private: status_t _ExtractFileData(BDataReader* dataReader, const BPackageData& data, int fd) { - // create a BPackageDataReader - BPackageDataReader* reader; + // create a PackageDataReader + BAbstractBufferedDataReader* reader; status_t error = BPackageDataReaderFactory(&fBufferCache) .CreatePackageDataReader(dataReader, data, reader); if (error != B_OK) return error; - ObjectDeleter readerDeleter(reader); + ObjectDeleter readerDeleter(reader); // write the data off_t bytesRemaining = data.UncompressedSize(); diff --git a/src/kits/package/hpkg/PackageDataReader.cpp b/src/kits/package/hpkg/PackageDataReader.cpp index 8986c9117f..66fcca3f14 100644 --- a/src/kits/package/hpkg/PackageDataReader.cpp +++ b/src/kits/package/hpkg/PackageDataReader.cpp @@ -41,35 +41,34 @@ static const size_t kUncompressedReaderBufferSize // #pragma mark - BPackageDataReader -BPackageDataReader::BPackageDataReader(BDataReader* dataReader) - : - fDataReader(dataReader) -{ -} +class PackageDataReader : public BAbstractBufferedDataReader { +public: + PackageDataReader(BDataReader* dataReader) + : + fDataReader(dataReader) + { + } + virtual ~PackageDataReader() + { + } -BPackageDataReader::~BPackageDataReader() -{ -} + virtual status_t Init(const BPackageData& data) = 0; - -status_t -BPackageDataReader::ReadData(off_t offset, void* buffer, size_t size) -{ - BBufferDataOutput output(buffer, size); - return ReadDataToOutput(offset, size, &output); -} +protected: + BDataReader* fDataReader; +}; // #pragma mark - UncompressedPackageDataReader -class UncompressedPackageDataReader : public BPackageDataReader { +class UncompressedPackageDataReader : public PackageDataReader { public: UncompressedPackageDataReader(BDataReader* dataReader, BBufferCache* bufferCache) : - BPackageDataReader(dataReader), + PackageDataReader(dataReader), fBufferCache(bufferCache) { } @@ -144,11 +143,11 @@ private: // #pragma mark - ZlibPackageDataReader -class ZlibPackageDataReader : public BPackageDataReader { +class ZlibPackageDataReader : public PackageDataReader { public: ZlibPackageDataReader(BDataReader* dataReader, BBufferCache* bufferCache) : - BPackageDataReader(dataReader), + PackageDataReader(dataReader), fBufferCache(bufferCache), fUncompressBuffer(NULL), fOffsetTable(NULL) @@ -407,9 +406,9 @@ BPackageDataReaderFactory::BPackageDataReaderFactory(BBufferCache* bufferCache) status_t BPackageDataReaderFactory::CreatePackageDataReader(BDataReader* dataReader, - const BPackageData& data, BPackageDataReader*& _reader) + const BPackageData& data, BAbstractBufferedDataReader*& _reader) { - BPackageDataReader* reader; + PackageDataReader* reader; switch (data.Compression()) { case B_HPKG_COMPRESSION_NONE: diff --git a/src/kits/package/hpkg/PackageWriterImpl.cpp b/src/kits/package/hpkg/PackageWriterImpl.cpp index f424eb7904..35c13e4acf 100644 --- a/src/kits/package/hpkg/PackageWriterImpl.cpp +++ b/src/kits/package/hpkg/PackageWriterImpl.cpp @@ -887,9 +887,9 @@ PackageWriterImpl::_UpdateReadPackageInfo() throw status_t(error); } - // create a BPackageDataReader + // create a PackageDataReader BFDDataReader packageFileReader(FD()); - BPackageDataReader* reader; + BAbstractBufferedDataReader* reader; error = BPackageDataReaderFactory(&bufferCache) .CreatePackageDataReader(&packageFileReader, data, reader); if (error != B_OK) { @@ -897,7 +897,7 @@ PackageWriterImpl::_UpdateReadPackageInfo() strerror(error)); throw status_t(error); } - ObjectDeleter readerDeleter(reader); + ObjectDeleter readerDeleter(reader); // read the data error = reader->ReadData(0, valueBuffer, size); diff --git a/src/kits/package/hpkg/RepositoryWriterImpl.cpp b/src/kits/package/hpkg/RepositoryWriterImpl.cpp index 8cd6aa0b67..975dfdf0af 100644 --- a/src/kits/package/hpkg/RepositoryWriterImpl.cpp +++ b/src/kits/package/hpkg/RepositoryWriterImpl.cpp @@ -54,13 +54,13 @@ struct PackageEntryDataFetcher { status_t ReadIntoString(BDataReader* dataReader, BString& _contents) { - // create a BPackageDataReader - BPackageDataReader* reader; + // create a PackageDataReader + BAbstractBufferedDataReader* reader; status_t result = BPackageDataReaderFactory(&fBufferCache) .CreatePackageDataReader(dataReader, fPackageData, reader); if (result != B_OK) return result; - ObjectDeleter readerDeleter(reader); + ObjectDeleter readerDeleter(reader); // copy data into the given string int32 bufferSize = fPackageData.UncompressedSize(); diff --git a/src/kits/package/hpkg/v1/PackageDataReaderV1.cpp b/src/kits/package/hpkg/v1/PackageDataReaderV1.cpp index 5eda338b24..62ed6147f8 100644 --- a/src/kits/package/hpkg/v1/PackageDataReaderV1.cpp +++ b/src/kits/package/hpkg/v1/PackageDataReaderV1.cpp @@ -41,38 +41,37 @@ static const size_t kUncompressedReaderBufferSize = B_HPKG_DEFAULT_DATA_CHUNK_SIZE_ZLIB; -// #pragma mark - BPackageDataReader +// #pragma mark - PackageDataReader -BPackageDataReader::BPackageDataReader(BDataReader* dataReader) - : - fDataReader(dataReader) -{ -} +class PackageDataReader : public BAbstractBufferedDataReader { +public: + PackageDataReader(BDataReader* dataReader) + : + fDataReader(dataReader) + { + } + virtual ~PackageDataReader() + { + } -BPackageDataReader::~BPackageDataReader() -{ -} + virtual status_t Init(const BPackageData& data) = 0; - -status_t -BPackageDataReader::ReadData(off_t offset, void* buffer, size_t size) -{ - BBufferDataOutput output(buffer, size); - return ReadDataToOutput(offset, size, &output); -} +protected: + BDataReader* fDataReader; +}; // #pragma mark - UncompressedPackageDataReader -class UncompressedPackageDataReader : public BPackageDataReader { +class UncompressedPackageDataReader : public PackageDataReader { public: UncompressedPackageDataReader(BDataReader* dataReader, BBufferCache* bufferCache) : - BPackageDataReader(dataReader), + PackageDataReader(dataReader), fBufferCache(bufferCache) { } @@ -147,11 +146,11 @@ private: // #pragma mark - ZlibPackageDataReader -class ZlibPackageDataReader : public BPackageDataReader { +class ZlibPackageDataReader : public PackageDataReader { public: ZlibPackageDataReader(BDataReader* dataReader, BBufferCache* bufferCache) : - BPackageDataReader(dataReader), + PackageDataReader(dataReader), fBufferCache(bufferCache), fUncompressBuffer(NULL), fOffsetTable(NULL) @@ -410,9 +409,9 @@ BPackageDataReaderFactory::BPackageDataReaderFactory(BBufferCache* bufferCache) status_t BPackageDataReaderFactory::CreatePackageDataReader(BDataReader* dataReader, - const BPackageData& data, BPackageDataReader*& _reader) + const BPackageData& data, BAbstractBufferedDataReader*& _reader) { - BPackageDataReader* reader; + PackageDataReader* reader; switch (data.Compression()) { case B_HPKG_COMPRESSION_NONE: