CRcvBuffer(int initSeqNo, size_t size, CUnitQueue* unitqueue, bool bMessageAPI)
int initSeqNo:
这个参数指定了接收缓冲区初始化的序列号(sequence number)。序列号用于追踪和管理网络通信中的包顺序。在接收缓冲区开始工作前,需要知道从哪个序列号开始接收数据包,以便正确地排序和处理这些包。
size_t size
这个参数定义了接收缓冲区的大小,它能够存储的数据单元的数量,缓冲区的大小直接影响到能够处理的数据量和可能的延迟。
CUnitQueue* unitqueue
这是一个指向CUnitQueue类型的指针,代表了一个共享单元队列
CUnitQueue可能负责管理数据单元的分配和回收,确保数据单元在网络通信中有效的被复用。CRcvBuffer需要这个队列来获取和释放数据单元。
bool bMessageAPI
这个布尔参数指示了缓冲区的操作模式,如果bMessageAPI为true, 则缓冲区将按照消息模式message mode操作,这意味着会处理多个数据包的完整消息。如果为false,则按照流模式stream mode操作,这种情况下,数据被视为一个连续的流,而不是离散的消息,这个参数影响缓冲区任何组织和传递数据给应用程序。
//定义了一个类型别名,表示时间点
typedef sync::steady_clock::time_point time_point;
//定义了一个类型别名,表示时间持续
typydef sync::steady_clock::duration duration;
public:
//构造函数,初始化接收缓冲区
CRcvBuffer(int initSeqNo, size_t size, CUnitQueue* unitqueue, bool bMessageAPI);
//析构函数,清理资源
~CRcvBuffer()
public:
//将一个单元插入到缓冲区中
int insert(CUnit* unit);
//从当前位置丢弃到指定序列号,不包括序列号的包
std::pair<int, int> dropUpTo(int32_t seqno)
//丢弃接收缓冲区中的所有包
int dropAll();
//枚举类型,定义了如果包存在时的丢弃行为
enum DropActionIfExists {
DROP_EXISTING = 0,
KEEP_EXISTING =
};
//从缓冲区丢弃一系列包
int dropMessage(int32_t seqnolo, int32_t seqnohi, int32_t msgno, DropActionIfExists actionOnExisting);
//从缓冲区中读取整个消息
int readMessage(char data, size_t len, SRT_MSGCTRLmsgctr

最低0.47元/天 解锁文章
829

被折叠的 条评论
为什么被折叠?



