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