1/*
2 * Copyright 2008-2010, François Revol, revol@free.fr. All rights reserved.
3 * Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
4 * Distributed under the terms of the MIT License.
5 */
6#ifndef HANDLE_H
7#define HANDLE_H
8
9
10#include <boot/vfs.h>
11
12
13#ifdef __cplusplus
14
15class Handle : public ConsoleNode {
16	public:
17		Handle(int handle);
18		Handle();
19		virtual ~Handle();
20
21		void SetHandle(int handle);
22
23		virtual ssize_t ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize);
24		virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize);
25
26		virtual off_t Size() const;
27
28	protected:
29		int16		fHandle;
30};
31
32/* character devices */
33class CharHandle : public Handle {
34	public:
35		CharHandle(int handle);
36		CharHandle();
37		virtual ~CharHandle();
38
39		virtual ssize_t ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize);
40		virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize);
41
42	protected:
43};
44
45/* block devices */
46/* cf. devices.cpp */
47
48#endif	/* __cplusplus */
49
50#endif	/* HANDLE_H */
51