ringbuffer.h

来自「下棋」· C头文件 代码 · 共 54 行

H
54
字号
// RingBuffer.h: interface for the CRingBuffer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_RINGBUFFER_H__A5C97CE0_8FCD_11D4_A61A_00105A763C82__INCLUDED_)
#define AFX_RINGBUFFER_H__A5C97CE0_8FCD_11D4_A61A_00105A763C82__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/*********************************************************************/
/*循环缓冲区管理类,大小由结构函数指定,使用前要调用Init()函数       */
/*输入数据由Write函数操作,最大长度等于剩余空间						 */
/*输出数据由Read或GetData操作,其最大长度不得大于其内容(GetDataCount)*/
/* ->-------------------------------------------------------->|      */  
/* |<--------------------------------------------------------<-		 */
/*            |__ m_nReadPoint               |__ m_nWritePoint       */
/*********************************************************************/
class CRingBuffer  
{
public:
	BOOL ReadFromFile(CFile&file,DWORD nLen);
	BOOL WriteToFile(CFile&file);
	BOOL WriteToFile(CFile&file,DWORD nLen);
	void Lock(BOOL bLock=TRUE);
	BOOL IsLocked();
	BOOL Skip(int nLen);
	BOOL CanRead(DWORD nLen);
	BOOL CanWrite(DWORD nLen);
	BOOL GetData(LPBYTE pBuf,DWORD nLen);
	BOOL Write(LPBYTE pBuf,DWORD nLen);
	DWORD GetFreeCount();
	BOOL Read(LPBYTE pBuf,DWORD nLen);
	void Reset(DWORD kBytes=0);
	BOOL IsEmpty();
	BOOL IsFull();
	DWORD GetDataCount();
	BOOL Init(DWORD nKb=64);
	void Release();
	CRingBuffer();
	virtual ~CRingBuffer();

protected:
	void ReadData(LPBYTE pBuf,int nLen);
	BYTE   m_bFull;
	BYTE   m_bLocked[2];
	LPBYTE m_pBuffer;
	DWORD  m_readPoint;
	DWORD  m_writePoint;
	DWORD  m_nSize;
};

#endif // !defined(AFX_RINGBUFFER_H__A5C97CE0_8FCD_11D4_A61A_00105A763C82__INCLUDED_)

⌨️ 快捷键说明

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