2 * Copyright 2014, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
7 #include <DataPositionIOWrapper.h>
12 BDataPositionIOWrapper::BDataPositionIOWrapper(BDataIO
* io
)
21 BDataPositionIOWrapper::~BDataPositionIOWrapper()
27 BDataPositionIOWrapper::Read(void* buffer
, size_t size
)
29 ssize_t bytesRead
= fIO
->Read(buffer
, size
);
31 fPosition
+= bytesRead
;
38 BDataPositionIOWrapper::Write(const void* buffer
, size_t size
)
40 ssize_t bytesWritten
= fIO
->Write(buffer
, size
);
42 fPosition
+= bytesWritten
;
49 BDataPositionIOWrapper::ReadAt(off_t position
, void* buffer
, size_t size
)
51 if (position
!= fPosition
)
52 return B_NOT_SUPPORTED
;
54 return Read(buffer
, size
);
59 BDataPositionIOWrapper::WriteAt(off_t position
, const void* buffer
,
62 if (position
!= fPosition
)
63 return B_NOT_SUPPORTED
;
65 return Write(buffer
, size
);
70 BDataPositionIOWrapper::Seek(off_t position
, uint32 seekMode
)
74 return position
== 0 ? B_OK
: B_NOT_SUPPORTED
;
76 return position
== fPosition
? B_OK
: B_NOT_SUPPORTED
;
78 return B_NOT_SUPPORTED
;
86 BDataPositionIOWrapper::Position() const
93 BDataPositionIOWrapper::SetSize(off_t size
)
95 return size
== fPosition
? B_OK
: B_NOT_SUPPORTED
;
100 BDataPositionIOWrapper::GetSize(off_t
* size
) const
102 return B_NOT_SUPPORTED
;