AdapterIO: Further development of the interface

* Implement Open/Close mechanism.
* Implement SetBuffer.
* Implement timeout handling.
* Improve Seek mechanism, this is now working by locking the
thread until the backend call SeekCompleted.
This commit is contained in:
Dario Casalinuovo
2016-06-30 16:54:40 +02:00
parent 92cb0c5d18
commit 345dba5416
2 changed files with 108 additions and 45 deletions
+9 -5
View File
@@ -54,26 +54,30 @@ public:
virtual status_t SetSize(off_t size);
virtual status_t GetSize(off_t* size) const;
virtual status_t Open();
virtual void Close();
void SeekCompleted();
status_t SetBuffer(BPositionIO* buffer);
BInputAdapter* BuildInputAdapter();
protected:
friend class BInputAdapter;
void SetBuffer(BPositionIO* io);
virtual status_t SeekRequested(off_t position);
ssize_t BackWrite(const void* buffer, size_t size);
status_t SeekRequested(off_t position);
status_t SeekCompleted(off_t position);
private:
status_t _EvaluateWait(off_t position);
int32 fFlags;
bigtime_t fTimeout;
RelativePositionIO* fBuffer;
off_t fTotalSize;
bool fOpened;
sem_id fSeekSem;
BInputAdapter* fInputAdapter;