SRT源码分析--接收buffer源码分析

CRcvBuffer(int initSeqNo, size_t size, CUnitQueue* unitqueue, bool bMessageAPI)

int initSeqNo:

这个参数指定了接收缓冲区初始化序列号sequence number)序列用于追踪管理网络通信顺序接收缓冲区开始工作前需要知道从哪个序列号开始接收数据包以便正确排序处理这些包

size_t size

这个参数定义了接收缓冲区大小它能够存储数据单元数量缓冲区大小直接影响能够处理数据量可能延迟

CUnitQueue* unitqueue

这是一个指向CUnitQueue类型指针代表一个共享单元队列

CUnitQueue可能负责管理数据单元分配回收确保数据单元网络通信有效复用CRcvBuffer需要这个队列获取释放数据单元

bool bMessageAPI

这个布尔参数指示缓冲区操作模式如果bMessageAPItrue, 缓冲区按照消息模式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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值