4.4 周期检查发送缓存

间隔一段时间检查发送缓存,每个 Session 或者 Stream 独立处理各自的缓存,遍历每一个 Packet:

如果 Packet 状态为 ACK,说明已确认接收端数据接收完成,更新 Packet 状态为 SUSS,当前时间作为发送完成时间,并从发送缓存中删除。通知上层应用程序发送成功。

如果 Packet 状态为 SENT,说明还未收到 ACK,不确定接收端是否接收完成。检查是否已发送超时:

如果是则更新 Packet 状态为 FAIL。

如果未发送超时,检查是否到了重试时间。

  检查是否已到重试次数上限:

    如果是则更新 Packet 状态为 FAIL

    如果否则进行重试,重新发送该数据帧

如果 Packet 状态为 FAIL,则从发送缓存中删除,通知上层应用程序发送失败