📄 cirqueue.cpp
字号:
/*
Circle Queue Define for
CLient Buffer for Sampling and NetWork Send Operation
Server Buffer for RePlaying and NetWork Receive Operation
Fu QingYun 2007-05-15
*/
#include <memory.h>
#include "cirqueue.h"
// Constructor to Initialize Circle Queue Buffer
CirQueue::CirQueue()
{
// Fill Zero of Sample Buffer
memset(data, 0, sizeof(data));
// Set Queue Size & Queue Head Index & Queue Tail Index
cursize = 0;
head = 0;
tail = 0;
}
// Judge whether Circle Queue is Empty
bool CirQueue::IsEmpty()
{
if (cursize == 0)
return true;
else
return false;
}
// Judge whether Circle Queue is Full
bool CirQueue::IsFull()
{
if (cursize == QueueSize)
return true;
else
return false;
}
// Insert a Sample to Circle Queue
bool CirQueue::Insert(char * inbuf, int &data_len)
{
if (IsFull())
return false;
else
{
memcpy(data[tail], inbuf, data_len);
data_size[tail] = data_len;
cursize++;
tail++;
if(tail == QueueSize)
tail = 0;
return true;
}
}
// Get a Sample from Circle Queue
bool CirQueue::Remove(char * inbuf, int &data_len)
{
if (IsEmpty())
return false;
else
{
memcpy(inbuf, data[head], SampleSize);
data_len = data_size[head];
cursize--;
head++;
if(head == QueueSize)
head = 0;
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -