Microsoft.Azure.Amqp.AsyncIO.AsyncWriter.ContinueWrite C# (CSharp) Method

ContinueWrite() private method

private ContinueWrite ( ) : void
return void
            void ContinueWrite()
            {
                do
                {
                    lock (this.SyncRoot)
                    {
                        int count = this.bufferQueue.Count;
                        if (count == 0)
                        {
                            this.writing = false;
                            if (this.closed)
                            {
                                this.transport.SafeClose();
                            }

                            return;
                        }
                        else if (count == 1)
                        {
                            ByteBuffer buffer = this.bufferQueue.Dequeue();
                            this.OnBufferDequeued(buffer.Length);
                            this.writeAsyncEventArgs.SetBuffer(buffer);
                        }
                        else
                        {
                            var buffers = new List<ByteBuffer>(Math.Min(count, 64));
                            int size = 0;
                            for (int i = 0; i < count && size < MaxBatchSize; i++)
                            {
                                ByteBuffer buffer = this.bufferQueue.Dequeue();
                                buffers.Add(buffer);
                                size += buffer.Length;
                            }

                            this.OnBufferDequeued(size);
                            this.writeAsyncEventArgs.SetBuffer(buffers);
                        }
                    }
                }
                while (this.WriteCore());
            }