/// <summary> /// Creates a new instance of a <see cref="ObjectReader"/>. /// </summary> /// <param name="stream">The stream to read objects from.</param> /// <param name="cancellationToken"></param> private ObjectReader( Stream stream, CancellationToken cancellationToken) { // String serialization assumes both reader and writer to be of the same endianness. // It can be adjusted for BigEndian if needed. Debug.Assert(BitConverter.IsLittleEndian); _reader = new BinaryReader(stream, Encoding.UTF8); _objectReferenceMap = new ReaderReferenceMap <object>(); _stringReferenceMap = new ReaderReferenceMap <string>(); _cancellationToken = cancellationToken; }
private ObjectReader(Stream stream, bool leaveOpen, CancellationToken cancellationToken) { // String serialization assumes both reader and writer to be of the same endianness. // It can be adjusted for BigEndian if needed. Debug.Assert(BitConverter.IsLittleEndian); _reader = new BinaryReader(stream, Encoding.UTF8, leaveOpen); _objectReferenceMap = ReaderReferenceMap <object> .Create(); _stringReferenceMap = ReaderReferenceMap <string> .Create(); // Capture a copy of the current static binder state. That way we don't have to // access any locks while we're doing our processing. _binderSnapshot = ObjectBinder.GetSnapshot(); _cancellationToken = cancellationToken; }