1/*
2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef PACKAGE_FILE_H
6#define PACKAGE_FILE_H
7
8
9#include <package/hpkg/PackageData.h>
10
11#include "PackageLeafNode.h"
12
13
14using BPackageKit::BHPKG::BPackageData;
15
16
17class PackageFile : public PackageLeafNode {
18public:
19								PackageFile(Package* package, mode_t mode,
20									const BPackageData& data);
21	virtual						~PackageFile();
22
23	virtual	status_t			VFSInit(dev_t deviceID, ino_t nodeID);
24	virtual	void				VFSUninit();
25
26	virtual	off_t				FileSize() const;
27
28	virtual	status_t			Read(off_t offset, void* buffer,
29									size_t* bufferSize);
30	virtual	status_t			Read(io_request* request);
31
32private:
33			struct IORequestOutput;
34			struct DataAccessor;
35
36private:
37			BPackageData		fData;
38			DataAccessor*		fDataAccessor;
39};
40
41
42#endif	// PACKAGE_FILE_H
43