1*89dc7e48SIngo Weinhold /* 2*89dc7e48SIngo Weinhold * Copyright 2009-2010, Ingo Weinhold, ingo_weinhold@gmx.de. 3*89dc7e48SIngo Weinhold * Distributed under the terms of the MIT License. 4*89dc7e48SIngo Weinhold */ 5*89dc7e48SIngo Weinhold #ifndef _FILE_DESCRIPTOR_IO_H 6*89dc7e48SIngo Weinhold #define _FILE_DESCRIPTOR_IO_H 7*89dc7e48SIngo Weinhold 8*89dc7e48SIngo Weinhold 9*89dc7e48SIngo Weinhold #include <DataIO.h> 10*89dc7e48SIngo Weinhold 11*89dc7e48SIngo Weinhold 12*89dc7e48SIngo Weinhold class BFileDescriptorIO : public BPositionIO { 13*89dc7e48SIngo Weinhold public: 14*89dc7e48SIngo Weinhold BFileDescriptorIO(int fd, 15*89dc7e48SIngo Weinhold bool takeOverOwnership = false); 16*89dc7e48SIngo Weinhold virtual ~BFileDescriptorIO(); 17*89dc7e48SIngo Weinhold 18*89dc7e48SIngo Weinhold virtual ssize_t Read(void *buffer, size_t size); 19*89dc7e48SIngo Weinhold virtual ssize_t Write(const void *buffer, size_t size); 20*89dc7e48SIngo Weinhold 21*89dc7e48SIngo Weinhold virtual ssize_t ReadAt(off_t position, void *buffer, 22*89dc7e48SIngo Weinhold size_t size); 23*89dc7e48SIngo Weinhold virtual ssize_t WriteAt(off_t position, const void *buffer, 24*89dc7e48SIngo Weinhold size_t size); 25*89dc7e48SIngo Weinhold 26*89dc7e48SIngo Weinhold virtual off_t Seek(off_t position, uint32 seekMode); 27*89dc7e48SIngo Weinhold virtual off_t Position() const; 28*89dc7e48SIngo Weinhold 29*89dc7e48SIngo Weinhold virtual status_t SetSize(off_t size); 30*89dc7e48SIngo Weinhold virtual status_t GetSize(off_t* size) const; 31*89dc7e48SIngo Weinhold 32*89dc7e48SIngo Weinhold private: 33*89dc7e48SIngo Weinhold BFileDescriptorIO( 34*89dc7e48SIngo Weinhold const BFileDescriptorIO& other); 35*89dc7e48SIngo Weinhold BFileDescriptorIO& operator=(const BFileDescriptorIO& other); 36*89dc7e48SIngo Weinhold 37*89dc7e48SIngo Weinhold private: 38*89dc7e48SIngo Weinhold int fFD; 39*89dc7e48SIngo Weinhold bool fOwnsFD; 40*89dc7e48SIngo Weinhold }; 41*89dc7e48SIngo Weinhold 42*89dc7e48SIngo Weinhold 43*89dc7e48SIngo Weinhold #endif // _FILE_DESCRIPTOR_IO_H 44