1//----------------------------------------------------------------------
2//  This software is part of the OpenBeOS distribution and is covered
3//  by the OpenBeOS license.
4//
5//  Copyright (c) 2003 Tyler Dauwalder, tyler@dauwalder.net
6//----------------------------------------------------------------------
7
8/*! \file PositionIOStream.h
9*/
10
11#ifndef _POSITION_IO_STREAM_H
12#define _POSITION_IO_STREAM_H
13
14#include <DataIO.h>
15
16#include "DataStream.h"
17
18/*! \brief 	DataStream implementation that writes to a BPositionIO.
19*/
20class PositionIOStream : public DataStream {
21public:
22	PositionIOStream(BPositionIO &stream);
23	virtual status_t InitCheck() const { return B_OK; }
24
25	static const size_t kBufferSize = 32 * 1024;
26
27	virtual ssize_t Read(void *buffer, size_t size);
28	virtual	ssize_t ReadAt(off_t pos, void *buffer, size_t size);
29
30	virtual ssize_t Write(const void *buffer, size_t size);
31	virtual ssize_t WriteAt(off_t pos, const void *buffer, size_t size);
32
33	virtual ssize_t Write(BDataIO &data, size_t size);
34	virtual ssize_t	WriteAt(off_t pos, BDataIO &data, size_t size);
35
36	virtual ssize_t Zero(size_t size);
37	virtual ssize_t	ZeroAt(off_t pos, size_t size);
38
39	virtual off_t Seek(off_t position, uint32 seek_mode);
40	virtual off_t Position() const;
41
42	virtual status_t SetSize(off_t size);
43private:
44	BPositionIO &fStream;
45};
46
47#endif	// _POSITION_IO_STREAM_H
48