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)); }