1/*
2** Copyright 2003, Axel D��rfler, axeld@pinc-software.de. All rights reserved.
3** Distributed under the terms of the MIT License.
4*/
5#ifndef FILE_H
6#define FILE_H
7
8
9#include <boot/vfs.h>
10
11#include "Volume.h"
12
13
14namespace FFS {
15
16class File : public Node {
17	public:
18		File(Volume &volume, int32 block);
19		virtual ~File();
20
21		status_t InitCheck();
22
23		virtual status_t Open(void **_cookie, int mode);
24		virtual status_t Close(void *cookie);
25
26		virtual ssize_t ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize);
27		virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize);
28
29		virtual status_t GetName(char *nameBuffer, size_t bufferSize) const;
30		virtual int32 Type() const;
31		virtual off_t Size() const;
32		virtual ino_t Inode() const;
33
34	private:
35		Volume		&fVolume;
36		FileBlock	fNode;
37};
38
39}	// namespace FFS
40
41#endif	/* FILE_H */
42