Some *DataReader improvements
* BFDDataReader: Add SetFD(). * BBufferDataReader: Derive from BAbstractBufferedDataReader.
This commit is contained in:
@@ -41,6 +41,8 @@ class BFDDataReader : public BDataReader {
|
|||||||
public:
|
public:
|
||||||
BFDDataReader(int fd);
|
BFDDataReader(int fd);
|
||||||
|
|
||||||
|
void SetFD(int fd);
|
||||||
|
|
||||||
virtual status_t ReadData(off_t offset, void* buffer,
|
virtual status_t ReadData(off_t offset, void* buffer,
|
||||||
size_t size);
|
size_t size);
|
||||||
|
|
||||||
@@ -64,12 +66,14 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class BBufferDataReader : public BDataReader {
|
class BBufferDataReader : public BAbstractBufferedDataReader {
|
||||||
public:
|
public:
|
||||||
BBufferDataReader(const void* data, size_t size);
|
BBufferDataReader(const void* data, size_t size);
|
||||||
|
|
||||||
virtual status_t ReadData(off_t offset, void* buffer,
|
virtual status_t ReadData(off_t offset, void* buffer,
|
||||||
size_t size);
|
size_t size);
|
||||||
|
virtual status_t ReadDataToOutput(off_t offset, size_t size,
|
||||||
|
BDataOutput* output);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const void* fData;
|
const void* fData;
|
||||||
|
|||||||
@@ -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 BHPKG
|
||||||
|
|
||||||
} // namespace BPackageKit
|
} // namespace BPackageKit
|
||||||
|
|||||||
@@ -22,6 +22,13 @@ BFDDataReader::BFDDataReader(int fd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
BFDDataReader::SetFD(int fd)
|
||||||
|
{
|
||||||
|
fFD = fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
BFDDataReader::ReadData(off_t offset, void* buffer, size_t size)
|
BFDDataReader::ReadData(off_t offset, void* buffer, size_t size)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user