public bool TryUpdateBufferSize()

in src/Transport/TcpTransport.cs [510:566]


            public bool TryUpdateBufferSize(int bytes, out int bufferSize)
            {
                this.transferedBytes += Math.Max(bytes, this.unitSize);

                bufferSize = 0;

                int newLevel = 0;
                bool levelChanged = false;
                DateTime now = DateTime.UtcNow;
                if (now.Ticks - this.firstOperation.Ticks >= durationTicks)
                {
                    for (int i = thresholds.Length - 1; i >= 0; --i)
                    {
                        if (this.transferedBytes >= thresholds[i])
                        {
                            newLevel = i;
                            break;
                        }
                    }

                    if (newLevel > this.level)
                    {
                        if (this.direction > 0)
                        {
                            this.level++;
                            bufferSize = bufferSizes[this.level];
                            levelChanged = true;
                        }
                        else
                        {
                            this.direction = 1;
                        }
                    }
                    else if (newLevel < this.level)
                    {
                        if (this.direction < 0)
                        {
                            this.level--;
                            bufferSize = bufferSizes[this.level];
                            levelChanged = true;
                        }
                        else
                        {
                            this.direction = -1;
                        }
                    }
                    else
                    {
                        this.direction = 0;
                    }

                    this.transferedBytes = 0;
                    this.firstOperation = now;
                }

                return levelChanged;
            }