⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ringbufferex.h

📁 奇迹世界公用文件源代码,研究网络游戏的朋友可以研究下
💻 H
字号:
#pragma once

namespace util
{
//=============================================================================================================================
/// RingBufferEx class
/**
	@author	Kim Min Wook < taiyo@webzen.com >
	@since	2004. 12. 29
	@remark
		- 扁粮狼 傅滚欺(RingBuffer)狼 促弗 扁瓷狼 傅滚欺
	@note
		- 
	@history 
		- 
*/
//=============================================================================================================================
//
// Socket栏肺 data甫 林绊罐扁 傈俊 历厘秦滴绰 buffer( circular queue )
//
// m_Head==m_Tail : empty
// m_Head==m_Tail+1 : full ( m_Head > m_Tail )
// m_Head==0, m_Tail==m_BufferSize-1 : full ( m_Head < m_Tail )
// (!) m_Tail 磊府绰 亲惑 empty捞促.
//
class RingBufferEx
{
public :
	RingBufferEx(int bufferSize = 0);
	virtual ~RingBufferEx();

	void	Init( int bufferSize );
	void	Release();
	void	Recycle();
	
	int		Write( const BYTE * pBuffer, int len );	// 郴何 buffer俊 敬促.
	int		Read( BYTE * pBuffer, int len );			// 郴何 buffer俊辑 佬绢柯促.
	int		Peek( BYTE * pBuffer, int len );			// Read牢单 head, tail篮 函拳绝促.
	int		Skip( int len );						// head, tail父 函拳

	bool	IsEmpty() const			{ return m_Head == m_Tail; }
	bool	IsFull() const			{ return GetFreeSize()==0; }
	int		GetBufferSize() const	{ return m_BufferSize; }
	int		GetDataSize() const		{ return m_Head <= m_Tail? m_Tail-m_Head : m_BufferSize-m_Head+m_Tail; }
	int		GetFreeSize() const		{ return GetBufferSize() - GetDataSize() - 1; }	// -1 for tail position

	BYTE *	GetContigousPtr(OUT int & size) const;
protected :
	BYTE *		m_pBuffer;
	int			m_BufferSize;
	int			m_Head;
	int			m_Tail;
};

}

⌨️ 快捷键说明

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