// private static methods private byte[] CombineCommandMessageSectionsIntoSingleDocument(Stream stream) { using (var inputStream = new BsonStreamAdapter(stream, ownsStream: false)) using (var memoryStream = new MemoryStream()) using (var outputStream = new BsonStreamAdapter(memoryStream, ownsStream: false)) { var messageStartPosition = inputStream.Position; var messageLength = inputStream.ReadInt32(); var messageEndPosition = messageStartPosition + messageLength; var requestId = inputStream.ReadInt32(); var responseTo = inputStream.ReadInt32(); var opcode = inputStream.ReadInt32(); var flags = (OpMsgFlags)inputStream.ReadInt32(); if (flags.HasFlag(OpMsgFlags.ChecksumPresent)) { messageEndPosition -= 4; // ignore checksum } CopyType0Section(inputStream, outputStream); outputStream.Position -= 1; while (inputStream.Position < messageEndPosition) { CopyType1Section(inputStream, outputStream); } outputStream.WriteByte(0); outputStream.BackpatchSize(0); return(memoryStream.ToArray()); } }