xref: /haiku/headers/private/storage/FileDescriptorIO.h (revision 89dc7e4875478a00ad5646690ddf8add04cb288f)
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