diff --git a/headers/os/package/hpkg/DataReader.h b/headers/os/package/hpkg/DataReader.h index c816b93edd..c0668c0cfe 100644 --- a/headers/os/package/hpkg/DataReader.h +++ b/headers/os/package/hpkg/DataReader.h @@ -14,6 +14,9 @@ namespace BPackageKit { namespace BHPKG { +class BDataOutput; + + class BDataReader { public: virtual ~BDataReader(); @@ -23,6 +26,17 @@ public: }; +class BAbstractBufferedDataReader : public BDataReader { +public: + virtual ~BAbstractBufferedDataReader(); + + 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; +}; + + class BFDDataReader : public BDataReader { public: BFDDataReader(int fd); diff --git a/src/kits/package/hpkg/DataReader.cpp b/src/kits/package/hpkg/DataReader.cpp index cd7b0db4df..cc770e233d 100644 --- a/src/kits/package/hpkg/DataReader.cpp +++ b/src/kits/package/hpkg/DataReader.cpp @@ -6,6 +6,8 @@ #include +#include + #include @@ -22,6 +24,22 @@ BDataReader::~BDataReader() } +// #pragma mark - BAbstractBufferedDataReader + + +BAbstractBufferedDataReader::~BAbstractBufferedDataReader() +{ +} + + +status_t +BAbstractBufferedDataReader::ReadData(off_t offset, void* buffer, size_t size) +{ + BBufferDataOutput output(buffer, size); + return ReadDataToOutput(offset, size, &output); +} + + // #pragma mark - BBufferDataReader