void ParseMessages(Stream outputMessageStream)
        {
            while (DataStreamBuffer.RemainingData > 0)
            {
                if (RemainingMessageDataSize == 0)
                {
                    if (ReadAndParseChunkSize() == ChunkType.ZeroChunk)
                    {
                        if (IsMessageOpen)
                        {
                            CloseMessage();
                            MessageCount++;
                        }

                        continue;
                    }

                    OpenMessage();
                }

                var writeLength = Math.Min(RemainingMessageDataSize, DataStreamBuffer.RemainingData);
                DataStreamBuffer.WriteInto(outputMessageStream, writeLength);
                RemainingMessageDataSize -= writeLength;
            }
        }
 private int ReadChunkSize()
 {
     DataStreamBuffer.WriteInto(_chunkSizeBuffer, 0, ChunkHeaderSize);
     return(PackStreamBitConverter.ToUInt16(_chunkSizeBuffer));
 }