HaikuDepot: notify work status from main window
[haiku.git] / src / kits / support / DataPositionIOWrapper.cpp
blobea2312bfeef6a2bc8d0f320259a1eadc8c2f4db8
1 /*
2 * Copyright 2014, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
7 #include <DataPositionIOWrapper.h>
9 #include <stdio.h>
12 BDataPositionIOWrapper::BDataPositionIOWrapper(BDataIO* io)
14 BPositionIO(),
15 fIO(io),
16 fPosition(0)
21 BDataPositionIOWrapper::~BDataPositionIOWrapper()
26 ssize_t
27 BDataPositionIOWrapper::Read(void* buffer, size_t size)
29 ssize_t bytesRead = fIO->Read(buffer, size);
30 if (bytesRead > 0)
31 fPosition += bytesRead;
33 return bytesRead;
37 ssize_t
38 BDataPositionIOWrapper::Write(const void* buffer, size_t size)
40 ssize_t bytesWritten = fIO->Write(buffer, size);
41 if (bytesWritten > 0)
42 fPosition += bytesWritten;
44 return bytesWritten;
48 ssize_t
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);
58 ssize_t
59 BDataPositionIOWrapper::WriteAt(off_t position, const void* buffer,
60 size_t size)
62 if (position != fPosition)
63 return B_NOT_SUPPORTED;
65 return Write(buffer, size);
69 off_t
70 BDataPositionIOWrapper::Seek(off_t position, uint32 seekMode)
72 switch (seekMode) {
73 case SEEK_CUR:
74 return position == 0 ? B_OK : B_NOT_SUPPORTED;
75 case SEEK_SET:
76 return position == fPosition ? B_OK : B_NOT_SUPPORTED;
77 case SEEK_END:
78 return B_NOT_SUPPORTED;
79 default:
80 return B_BAD_VALUE;
85 off_t
86 BDataPositionIOWrapper::Position() const
88 return fPosition;
92 status_t
93 BDataPositionIOWrapper::SetSize(off_t size)
95 return size == fPosition ? B_OK : B_NOT_SUPPORTED;
99 status_t
100 BDataPositionIOWrapper::GetSize(off_t* size) const
102 return B_NOT_SUPPORTED;