BDataIO: Add Flush()

This commit is contained in:
Ingo Weinhold 2014-06-29 18:14:07 +02:00
parent 60ccc119b0
commit b773d89eba
3 changed files with 52 additions and 4 deletions

View File

@ -102,8 +102,24 @@
/*!
\fn virtual status_t BDataIO::ReadExactly(void* buffer, size_t size,
size_t* _bytesRead)
\fn virtual status_t BDataIO::Flush()
\brief Writes pending data to underlying storage.
This method is relevant for BDataIO implementations that buffer data passed
to Write(). The Flush() implementation should make sure that all such data
are written to the underlying storage.
The default implementation is a no-op returning \c B_OK.
\return An error code indicating whether flushing the buffered data
succeeded.
\since Haiku R1
*/
/*!
\fn virtual status_t BDataIO::ReadExactly(void* buffer, size_t size, size_t* _bytesRead)
\brief Reads an exact amount of data from the object into a buffer.
This is a convenience wrapper method for Read() for code that expects the

View File

@ -17,6 +17,8 @@ public:
virtual ssize_t Read(void* buffer, size_t size);
virtual ssize_t Write(const void* buffer, size_t size);
virtual status_t Flush();
status_t ReadExactly(void* buffer, size_t size,
size_t* _bytesRead = NULL);
status_t WriteExactly(const void* buffer, size_t size,
@ -26,7 +28,6 @@ private:
BDataIO(const BDataIO&);
BDataIO& operator=(const BDataIO&);
virtual void _ReservedDataIO1();
virtual void _ReservedDataIO2();
virtual void _ReservedDataIO3();
virtual void _ReservedDataIO4();

View File

@ -40,6 +40,13 @@ BDataIO::Write(const void* buffer, size_t size)
}
status_t
BDataIO::Flush()
{
return B_OK;
}
status_t
BDataIO::ReadExactly(void* buffer, size_t size, size_t* _bytesRead)
{
@ -116,8 +123,32 @@ BDataIO::operator=(const BDataIO &)
}
#if __GNUC__ == 2
extern "C" status_t
_ReservedDataIO1__7BDataIO(BDataIO* self)
{
return self->BDataIO::Flush();
}
#else
// TODO: RELEASE: Remove!
extern "C" status_t
_ZN7BDataIO16_ReservedDataIO1Ev(BDataIO* self)
{
return self->BDataIO::Flush();
}
#endif
// FBC
void BDataIO::_ReservedDataIO1(){}
void BDataIO::_ReservedDataIO2(){}
void BDataIO::_ReservedDataIO3(){}
void BDataIO::_ReservedDataIO4(){}