public CSndBuffer(int size, int mss)
{
m_BufLock = null;
m_pBlock = null;
m_pFirstBlock = null;
m_pCurrBlock = null;
m_pLastBlock = null;
m_pBuffer = null;
m_iNextMsgNo = 0;
m_iSize = size;
m_iMSS = mss;
m_iCount = 0;
// initial physical buffer of "size"
m_pBuffer = new Buffer();
m_pBuffer.m_pcData = new byte[m_iSize * m_iMSS];
m_pBuffer.m_iSize = m_iSize;
m_pBuffer.m_pNext = null;
// circular linked list for out bound packets
m_pBlock = new Block();
Block pb = m_pBlock;
for (int i = 1; i < m_iSize; ++i)
{
pb.m_pNext = new Block();
pb = pb.m_pNext;
}
pb.m_pNext = m_pBlock;
pb = m_pBlock;
byte[] pc = m_pBuffer.m_pcData;
for (int i = 0; i < m_iSize; ++i)
{
pb.m_pcData = pc;
pb = pb.m_pNext;
//pc += m_iMSS;
}
m_pFirstBlock = m_pCurrBlock = m_pLastBlock = m_pBlock;
m_BufLock = new Mutex();
}