当前位置: 首页 > 文档资料 > CatLib 中文文档 >

环型缓冲区

优质
小牛编辑
143浏览
2023-12-01

环型缓冲区是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。

构造环型缓冲区

var ringBuffer = new RingBufferStream();
函数原型
RingBufferStream(int capacity = 8192, bool exposable = true);
参数描述
capacity环状缓冲区的最大容量,为2的次方。如:传入12,则实际生效为16
exposable是否可以访问内部数组

Capacity

缓冲区的实际最大容量。

var capacity = ringBuffer.Capacity;
函数原型
int Capacity { get; }

WriteableCount

可以被写入的容量。

var writeableCount = ringBuffer.WriteableCount;
函数原型
int WriteableCount { get; }

ReadableCount

可以被读取的容量。

var readableCount = ringBuffer.ReadableCount;
函数原型
int ReadableCount { get; }

GetBuffer

获取原始缓冲区,如果exposablefalse则会引发一个UnauthorizedAccessException异常。

ringBuffer.GetBuffer();
函数原型
byte[] GetBuffer();

Read

读取环状缓冲区的数据。

var read = ringBuffer.Read(buffer, offset, count);
函数原型
int Read(byte[] buffer, int offset, int count);
参数描述
buffer读取到的缓冲区
offsetbuffer缓冲区的起始偏移量
count希望读取的长度

Peek

读取环状缓冲区的数据,但是不前移读取位置。

var read = ringBuffer.Peek(buffer, offset, count);
函数原型
int Peek(byte[] buffer, int offset, int count);
参数描述
buffer读取到的缓冲区
offsetbuffer缓冲区的起始偏移量
count希望读取的长度

Write

将数据写入到环型缓冲区,返回值为实际写入的长度。

var write = ringBuffer.Write(buffer, 0, buffer.Length);
函数原型
int Write(byte[] buffer, int offset, int count);
参数描述
buffer希望写入到环型缓冲区的数据
offsetbuffer缓冲区的起始偏移量
count写入的长度

Clear

清空环型缓冲区。

ringBuffer.Clear();
函数原型
void Clear();