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.
This commit is contained in:
Ingo Weinhold
2013-05-25 01:12:23 +02:00
parent 175ff8ec77
commit 2c32402da5
11 changed files with 64 additions and 102 deletions
+1 -19
View File
@@ -15,27 +15,9 @@ namespace BHPKG {
class BBufferCache; class BBufferCache;
class BDataOutput;
class BPackageData; 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 { class BPackageDataReaderFactory {
public: public:
BPackageDataReaderFactory( BPackageDataReaderFactory(
@@ -43,7 +25,7 @@ public:
status_t CreatePackageDataReader(BDataReader* dataReader, status_t CreatePackageDataReader(BDataReader* dataReader,
const BPackageData& data, const BPackageData& data,
BPackageDataReader*& _reader); BAbstractBufferedDataReader*& _reader);
private: private:
BBufferCache* fBufferCache; BBufferCache* fBufferCache;
+1 -19
View File
@@ -15,7 +15,6 @@ namespace BHPKG {
class BBufferCache; class BBufferCache;
class BDataOutput;
namespace V1 { namespace V1 {
@@ -24,23 +23,6 @@ namespace V1 {
class BPackageData; 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 { class BPackageDataReaderFactory {
public: public:
BPackageDataReaderFactory( BPackageDataReaderFactory(
@@ -48,7 +30,7 @@ public:
status_t CreatePackageDataReader(BDataReader* dataReader, status_t CreatePackageDataReader(BDataReader* dataReader,
const BPackageData& data, const BPackageData& data,
BPackageDataReader*& _reader); BAbstractBufferedDataReader*& _reader);
private: private:
BBufferCache* fBufferCache; BBufferCache* fBufferCache;
@@ -31,13 +31,13 @@ static status_t
read_package_data(const BPackageData& data, BDataReader* dataReader, read_package_data(const BPackageData& data, BDataReader* dataReader,
off_t offset, void* buffer, size_t* bufferSize) off_t offset, void* buffer, size_t* bufferSize)
{ {
// create a BPackageDataReader // create a PackageDataReader
BPackageDataReader* reader; BAbstractBufferedDataReader* reader;
status_t error = GlobalFactory::Default()->CreatePackageDataReader( status_t error = GlobalFactory::Default()->CreatePackageDataReader(
dataReader, data, reader); dataReader, data, reader);
if (error != B_OK) if (error != B_OK)
RETURN_ERROR(error); RETURN_ERROR(error);
ObjectDeleter<BPackageDataReader> readerDeleter(reader); ObjectDeleter<BAbstractBufferedDataReader> readerDeleter(reader);
// check the offset // check the offset
if (offset < 0 || (uint64)offset > data.UncompressedSize()) if (offset < 0 || (uint64)offset > data.UncompressedSize())
@@ -67,7 +67,7 @@ GlobalFactory::Default()
status_t status_t
GlobalFactory::CreatePackageDataReader(BDataReader* dataReader, GlobalFactory::CreatePackageDataReader(BDataReader* dataReader,
const BPackageData& data, BPackageDataReader*& _reader) const BPackageData& data, BAbstractBufferedDataReader*& _reader)
{ {
return fPackageDataReaderFactory.CreatePackageDataReader(dataReader, data, return fPackageDataReaderFactory.CreatePackageDataReader(dataReader, data,
_reader); _reader);
@@ -14,7 +14,7 @@
using BPackageKit::BHPKG::BDataReader; using BPackageKit::BHPKG::BDataReader;
using BPackageKit::BHPKG::BPackageData; using BPackageKit::BHPKG::BPackageData;
using BPackageKit::BHPKG::BPackageDataReader; using BPackageKit::BHPKG::BAbstractBufferedDataReader;
using BPackageKit::BHPKG::BPackageDataReaderFactory; using BPackageKit::BHPKG::BPackageDataReaderFactory;
using BPackageKit::BHPKG::B_HPKG_DEFAULT_DATA_CHUNK_SIZE_ZLIB; using BPackageKit::BHPKG::B_HPKG_DEFAULT_DATA_CHUNK_SIZE_ZLIB;
@@ -31,7 +31,7 @@ public:
status_t CreatePackageDataReader(BDataReader* dataReader, status_t CreatePackageDataReader(BDataReader* dataReader,
const BPackageData& data, const BPackageData& data,
BPackageDataReader*& _reader); BAbstractBufferedDataReader*& _reader);
private: private:
status_t _Init(); status_t _Init();
@@ -78,7 +78,7 @@ struct PackageFile::DataAccessor {
if (fDataReader == NULL) if (fDataReader == NULL)
RETURN_ERROR(B_NO_MEMORY); RETURN_ERROR(B_NO_MEMORY);
// create a BPackageDataReader // create a PackageDataReader
status_t error = GlobalFactory::Default()->CreatePackageDataReader( status_t error = GlobalFactory::Default()->CreatePackageDataReader(
fDataReader, *fData, fReader); fDataReader, *fData, fReader);
if (error != B_OK) if (error != B_OK)
@@ -130,7 +130,7 @@ private:
mutex fLock; mutex fLock;
BPackageData* fData; BPackageData* fData;
BDataReader* fDataReader; BDataReader* fDataReader;
BPackageDataReader* fReader; BAbstractBufferedDataReader* fReader;
void* fFileCache; void* fFileCache;
}; };
+3 -3
View File
@@ -592,13 +592,13 @@ private:
status_t _ExtractFileData(BDataReader* dataReader, const BPackageData& data, status_t _ExtractFileData(BDataReader* dataReader, const BPackageData& data,
int fd) int fd)
{ {
// create a BPackageDataReader // create a PackageDataReader
BPackageDataReader* reader; BAbstractBufferedDataReader* reader;
status_t error = BPackageDataReaderFactory(&fBufferCache) status_t error = BPackageDataReaderFactory(&fBufferCache)
.CreatePackageDataReader(dataReader, data, reader); .CreatePackageDataReader(dataReader, data, reader);
if (error != B_OK) if (error != B_OK)
return error; return error;
ObjectDeleter<BPackageDataReader> readerDeleter(reader); ObjectDeleter<BAbstractBufferedDataReader> readerDeleter(reader);
// write the data // write the data
off_t bytesRemaining = data.UncompressedSize(); off_t bytesRemaining = data.UncompressedSize();
+18 -19
View File
@@ -41,35 +41,34 @@ static const size_t kUncompressedReaderBufferSize
// #pragma mark - BPackageDataReader // #pragma mark - BPackageDataReader
BPackageDataReader::BPackageDataReader(BDataReader* dataReader) class PackageDataReader : public BAbstractBufferedDataReader {
public:
PackageDataReader(BDataReader* dataReader)
: :
fDataReader(dataReader) fDataReader(dataReader)
{ {
} }
virtual ~PackageDataReader()
{
}
BPackageDataReader::~BPackageDataReader() virtual status_t Init(const BPackageData& data) = 0;
{
}
protected:
status_t BDataReader* fDataReader;
BPackageDataReader::ReadData(off_t offset, void* buffer, size_t size) };
{
BBufferDataOutput output(buffer, size);
return ReadDataToOutput(offset, size, &output);
}
// #pragma mark - UncompressedPackageDataReader // #pragma mark - UncompressedPackageDataReader
class UncompressedPackageDataReader : public BPackageDataReader { class UncompressedPackageDataReader : public PackageDataReader {
public: public:
UncompressedPackageDataReader(BDataReader* dataReader, UncompressedPackageDataReader(BDataReader* dataReader,
BBufferCache* bufferCache) BBufferCache* bufferCache)
: :
BPackageDataReader(dataReader), PackageDataReader(dataReader),
fBufferCache(bufferCache) fBufferCache(bufferCache)
{ {
} }
@@ -144,11 +143,11 @@ private:
// #pragma mark - ZlibPackageDataReader // #pragma mark - ZlibPackageDataReader
class ZlibPackageDataReader : public BPackageDataReader { class ZlibPackageDataReader : public PackageDataReader {
public: public:
ZlibPackageDataReader(BDataReader* dataReader, BBufferCache* bufferCache) ZlibPackageDataReader(BDataReader* dataReader, BBufferCache* bufferCache)
: :
BPackageDataReader(dataReader), PackageDataReader(dataReader),
fBufferCache(bufferCache), fBufferCache(bufferCache),
fUncompressBuffer(NULL), fUncompressBuffer(NULL),
fOffsetTable(NULL) fOffsetTable(NULL)
@@ -407,9 +406,9 @@ BPackageDataReaderFactory::BPackageDataReaderFactory(BBufferCache* bufferCache)
status_t status_t
BPackageDataReaderFactory::CreatePackageDataReader(BDataReader* dataReader, BPackageDataReaderFactory::CreatePackageDataReader(BDataReader* dataReader,
const BPackageData& data, BPackageDataReader*& _reader) const BPackageData& data, BAbstractBufferedDataReader*& _reader)
{ {
BPackageDataReader* reader; PackageDataReader* reader;
switch (data.Compression()) { switch (data.Compression()) {
case B_HPKG_COMPRESSION_NONE: case B_HPKG_COMPRESSION_NONE:
+3 -3
View File
@@ -887,9 +887,9 @@ PackageWriterImpl::_UpdateReadPackageInfo()
throw status_t(error); throw status_t(error);
} }
// create a BPackageDataReader // create a PackageDataReader
BFDDataReader packageFileReader(FD()); BFDDataReader packageFileReader(FD());
BPackageDataReader* reader; BAbstractBufferedDataReader* reader;
error = BPackageDataReaderFactory(&bufferCache) error = BPackageDataReaderFactory(&bufferCache)
.CreatePackageDataReader(&packageFileReader, data, reader); .CreatePackageDataReader(&packageFileReader, data, reader);
if (error != B_OK) { if (error != B_OK) {
@@ -897,7 +897,7 @@ PackageWriterImpl::_UpdateReadPackageInfo()
strerror(error)); strerror(error));
throw status_t(error); throw status_t(error);
} }
ObjectDeleter<BPackageDataReader> readerDeleter(reader); ObjectDeleter<BAbstractBufferedDataReader> readerDeleter(reader);
// read the data // read the data
error = reader->ReadData(0, valueBuffer, size); error = reader->ReadData(0, valueBuffer, size);
@@ -54,13 +54,13 @@ struct PackageEntryDataFetcher {
status_t ReadIntoString(BDataReader* dataReader, BString& _contents) status_t ReadIntoString(BDataReader* dataReader, BString& _contents)
{ {
// create a BPackageDataReader // create a PackageDataReader
BPackageDataReader* reader; BAbstractBufferedDataReader* reader;
status_t result = BPackageDataReaderFactory(&fBufferCache) status_t result = BPackageDataReaderFactory(&fBufferCache)
.CreatePackageDataReader(dataReader, fPackageData, reader); .CreatePackageDataReader(dataReader, fPackageData, reader);
if (result != B_OK) if (result != B_OK)
return result; return result;
ObjectDeleter<BPackageDataReader> readerDeleter(reader); ObjectDeleter<BAbstractBufferedDataReader> readerDeleter(reader);
// copy data into the given string // copy data into the given string
int32 bufferSize = fPackageData.UncompressedSize(); int32 bufferSize = fPackageData.UncompressedSize();
@@ -41,38 +41,37 @@ static const size_t kUncompressedReaderBufferSize
= B_HPKG_DEFAULT_DATA_CHUNK_SIZE_ZLIB; = B_HPKG_DEFAULT_DATA_CHUNK_SIZE_ZLIB;
// #pragma mark - BPackageDataReader // #pragma mark - PackageDataReader
BPackageDataReader::BPackageDataReader(BDataReader* dataReader) class PackageDataReader : public BAbstractBufferedDataReader {
public:
PackageDataReader(BDataReader* dataReader)
: :
fDataReader(dataReader) fDataReader(dataReader)
{ {
} }
virtual ~PackageDataReader()
{
}
BPackageDataReader::~BPackageDataReader() virtual status_t Init(const BPackageData& data) = 0;
{
}
protected:
status_t BDataReader* fDataReader;
BPackageDataReader::ReadData(off_t offset, void* buffer, size_t size) };
{
BBufferDataOutput output(buffer, size);
return ReadDataToOutput(offset, size, &output);
}
// #pragma mark - UncompressedPackageDataReader // #pragma mark - UncompressedPackageDataReader
class UncompressedPackageDataReader : public BPackageDataReader { class UncompressedPackageDataReader : public PackageDataReader {
public: public:
UncompressedPackageDataReader(BDataReader* dataReader, UncompressedPackageDataReader(BDataReader* dataReader,
BBufferCache* bufferCache) BBufferCache* bufferCache)
: :
BPackageDataReader(dataReader), PackageDataReader(dataReader),
fBufferCache(bufferCache) fBufferCache(bufferCache)
{ {
} }
@@ -147,11 +146,11 @@ private:
// #pragma mark - ZlibPackageDataReader // #pragma mark - ZlibPackageDataReader
class ZlibPackageDataReader : public BPackageDataReader { class ZlibPackageDataReader : public PackageDataReader {
public: public:
ZlibPackageDataReader(BDataReader* dataReader, BBufferCache* bufferCache) ZlibPackageDataReader(BDataReader* dataReader, BBufferCache* bufferCache)
: :
BPackageDataReader(dataReader), PackageDataReader(dataReader),
fBufferCache(bufferCache), fBufferCache(bufferCache),
fUncompressBuffer(NULL), fUncompressBuffer(NULL),
fOffsetTable(NULL) fOffsetTable(NULL)
@@ -410,9 +409,9 @@ BPackageDataReaderFactory::BPackageDataReaderFactory(BBufferCache* bufferCache)
status_t status_t
BPackageDataReaderFactory::CreatePackageDataReader(BDataReader* dataReader, BPackageDataReaderFactory::CreatePackageDataReader(BDataReader* dataReader,
const BPackageData& data, BPackageDataReader*& _reader) const BPackageData& data, BAbstractBufferedDataReader*& _reader)
{ {
BPackageDataReader* reader; PackageDataReader* reader;
switch (data.Compression()) { switch (data.Compression()) {
case B_HPKG_COMPRESSION_NONE: case B_HPKG_COMPRESSION_NONE: