jbufferedoutputstream.h

来自「b tree code for index in the database d」· C头文件 代码 · 共 65 行

H
65
字号
//////////////////////////////////////////////////////////////////
///
/// (C) 2007: Yuriy Soroka <ysoroka@scalingweb.com>
///	      Anton Fedoruk <afedoruk@scalingweb.com>
///
//////////////////////////////////////////////////////////////////

#ifndef __BufferedOutputStream_h__
#define __BufferedOutputStream_h__

#include "JOutputStream.h"

///
/// Class JBufferedOutputStream
///

template< class T >
class JBufferedOutputStream : public JOutputStream
{
public:

	JBufferedOutputStream();
	JBufferedOutputStream( T *writeDest );
	virtual ~JBufferedOutputStream();

	void setSource( T *writeDest );
	T* source();

	virtual void close();
	virtual int write( char ch );
	inline virtual gint64 pos() const;
	virtual bool seek( gint64 position );
	bool seekRaw( gint64 position );
	inline virtual gint64 size();

	virtual void flush();
	virtual gint64 write( const char* pBuffer, gint64 bufLen );

	inline bool isOk() const;

protected:

	const static long chunkBufSize_ = 65536;
	//const static long chunkBufSize_ = 4096;

	inline bool canWrite( gint64 bufLen ) const;
	void writeToBuffer(const char* pBuffer, gint64 bufLen);
	void flushBuffer();

	T *dest_;

	char chunkBuffer_[ chunkBufSize_ ];
	long chunkBufPtr_;
	bool status_;

private:

	JBufferedOutputStream(const JBufferedOutputStream& rhs);            // cannot be copied
	JBufferedOutputStream& operator=(const JBufferedOutputStream& rhs); // nor assigned
};

#include "JBufferedOutputStream.inl"

#endif //__BufferedOutputStream_h__

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?