📄 ringbuffer.h
字号:
// 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -