public BufferedFrameWriter(Stream stream)
        {
            Verify.NotNull(stream, "stream");

            this.bufferStream1 = new BufferedOutStream(stream, maxBufferSize);
            this.bufferStream2 = new BufferedOutStream(stream, maxBufferSize);
            this.activeBufferStream = this.bufferStream1;
        }
        public override void Write(IList<Frame> frames)
        {
            var totalBytes = frames.Sum(frame => frame.Body.Count);
            if (this.activeBufferStream.Length + totalBytes >= this.maxBufferSize)
            {
                this.activeBufferStream.Flush();
                this.activeBufferStream = ReferenceEquals(this.activeBufferStream, this.bufferStream1) ? this.bufferStream2 : this.bufferStream1;
            }

            WriteFramesToStream(frames, this.activeBufferStream);
        }