Some *DataReader improvements

* BFDDataReader: Add SetFD().
* BBufferDataReader: Derive from BAbstractBufferedDataReader.
This commit is contained in:
Ingo Weinhold
2013-05-25 01:12:25 +02:00
parent 21ee6d5cdc
commit 16e5e5e4ec
3 changed files with 29 additions and 1 deletions
+5 -1
View File
@@ -41,6 +41,8 @@ class BFDDataReader : public BDataReader {
public:
BFDDataReader(int fd);
void SetFD(int fd);
virtual status_t ReadData(off_t offset, void* buffer,
size_t size);
@@ -64,12 +66,14 @@ private:
};
class BBufferDataReader : public BDataReader {
class BBufferDataReader : public BAbstractBufferedDataReader {
public:
BBufferDataReader(const void* data, size_t size);
virtual status_t ReadData(off_t offset, void* buffer,
size_t size);
virtual status_t ReadDataToOutput(off_t offset, size_t size,
BDataOutput* output);
private:
const void* fData;
+17
View File
@@ -68,6 +68,23 @@ BBufferDataReader::ReadData(off_t offset, void* buffer, size_t size)
}
status_t
BBufferDataReader::ReadDataToOutput(off_t offset, size_t size,
BDataOutput* output)
{
if (size == 0)
return B_OK;
if (offset < 0)
return B_BAD_VALUE;
if (size > fSize || offset > (off_t)fSize - (off_t)size)
return B_ERROR;
return output->WriteData((const uint8*)fData + offset, size);
}
} // namespace BHPKG
} // namespace BPackageKit
+7
View File
@@ -22,6 +22,13 @@ BFDDataReader::BFDDataReader(int fd)
}
void
BFDDataReader::SetFD(int fd)
{
fFD = fd;
}
status_t
BFDDataReader::ReadData(off_t offset, void* buffer, size_t size)
{