第二人生的源码分析(三十一)接收数据的流量控制

作者:袖梨 2022-07-02

数据接收回来后,本来就应立即处理掉,这样是比较简单的想法。但由于网络带宽有限,这时就需要限制UDP接收数据的速度。下面就来分析这种需求的实现,它的代码如下:
#001 S32 LLPacketRing::receivePacket (S32 socket, char *datap)
#002 {
#003      S32 packet_size = 0;
#004 
 
下面判断是否使用接收的流量限制。
#005      // If using the throttle, simulate a limited size input buffer.
#006      if (mUseInThrottle)
#007      {
#008             BOOL done = FALSE;
#009 
#010             // push any current net packet (if any) onto delay ring
下面开始循环地接收数据,并且判断是否到达流量的最大值。
#011             while (!done)
#012             {
#013                    LLPacketBuffer *packetp;
#014                    packetp = new LLPacketBuffer(socket);
#015 
上面创建LLPacketBuffer对象来接收数据。
 
 
#016                    if (packetp->getSize())
#017                    {
#018                           mActualBitsIn += packetp->getSize() * 8;
#019 
#020                           // Fake packet loss
#021           &n

相关文章

精彩推荐