// internal methods internal virtual void ReadHeaderFrom(BsonStreamReader streamReader) { _messageLength = streamReader.ReadInt32(); _requestId = streamReader.ReadInt32(); _responseTo = streamReader.ReadInt32(); if ((MessageOpcode)streamReader.ReadInt32() != _opcode) { throw new FileFormatException("Message header opcode is not the expected one."); } }
/// <summary> /// Reads a BSON Int32 from the reader. /// </summary> /// <returns>An Int32.</returns> public override int ReadInt32() { if (Disposed) { ThrowObjectDisposedException(); } VerifyBsonType("ReadInt32", BsonType.Int32); State = GetNextState(); return(_streamReader.ReadInt32()); }
/// <summary> /// Loads a byte buffer from a stream (the first 4 bytes in the stream are the length of the data). /// Depending on the required capacity, either a SingleChunkBuffer or a MultiChunkBuffer will be created. /// </summary> /// <param name="stream">The stream.</param> /// <returns>A buffer.</returns> /// <exception cref="System.ArgumentNullException">stream</exception> public static IByteBuffer LoadLengthPrefixedDataFrom(Stream stream) { if (stream == null) { throw new ArgumentNullException("stream"); } var streamReader = new BsonStreamReader(stream, Utf8Helper.StrictUtf8Encoding); var length = streamReader.ReadInt32(); var byteBuffer = Create(BsonChunkPool.Default, length); byteBuffer.Length = length; byteBuffer.WriteBytes(0, BitConverter.GetBytes(length), 0, 4); byteBuffer.LoadFrom(stream, 4, length - 4); byteBuffer.MakeReadOnly(); return byteBuffer; }
/// <summary> /// Loads a byte buffer from a stream (the first 4 bytes in the stream are the length of the data). /// Depending on the required capacity, either a SingleChunkBuffer or a MultiChunkBuffer will be created. /// </summary> /// <param name="stream">The stream.</param> /// <returns>A buffer.</returns> /// <exception cref="System.ArgumentNullException">stream</exception> public static IByteBuffer LoadLengthPrefixedDataFrom(Stream stream) { if (stream == null) { throw new ArgumentNullException("stream"); } var streamReader = new BsonStreamReader(stream, Utf8Helper.StrictUtf8Encoding); var length = streamReader.ReadInt32(); var byteBuffer = Create(BsonChunkPool.Default, length); byteBuffer.Length = length; byteBuffer.WriteBytes(0, BitConverter.GetBytes(length), 0, 4); byteBuffer.LoadFrom(stream, 4, length - 4); byteBuffer.MakeReadOnly(); return(byteBuffer); }