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 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;
+1 -19
View File
@@ -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;
@@ -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<BPackageDataReader> readerDeleter(reader);
ObjectDeleter<BAbstractBufferedDataReader> readerDeleter(reader);
// check the offset
if (offset < 0 || (uint64)offset > data.UncompressedSize())
@@ -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);
@@ -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();
@@ -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;
};
+3 -3
View File
@@ -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<BPackageDataReader> readerDeleter(reader);
ObjectDeleter<BAbstractBufferedDataReader> readerDeleter(reader);
// write the data
off_t bytesRemaining = data.UncompressedSize();
+20 -21
View File
@@ -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:
+3 -3
View File
@@ -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<BPackageDataReader> readerDeleter(reader);
ObjectDeleter<BAbstractBufferedDataReader> readerDeleter(reader);
// read the data
error = reader->ReadData(0, valueBuffer, size);
@@ -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<BPackageDataReader> readerDeleter(reader);
ObjectDeleter<BAbstractBufferedDataReader> readerDeleter(reader);
// copy data into the given string
int32 bufferSize = fPackageData.UncompressedSize();
@@ -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: