public static T Deserialize <T>(Stream stream, IFormatterResolver resolver, bool readStrict) { if (resolver == null) { resolver = defaultResolver; } var formatter = resolver.GetFormatterWithVerify <T>(); if (!readStrict) { var buffer = InternalMemoryPool.GetBuffer(); FillFromStream(stream, ref buffer); int readSize; return(formatter.Deserialize(buffer, 0, resolver, out readSize)); } else { int _; var bytes = MessagePackBinary.ReadMessageBlockFromStreamUnsafe(stream, false, out _); int readSize; return(formatter.Deserialize(bytes, 0, resolver, out readSize)); } }
public static byte[] Decode(Stream stream, bool readStrict = false) { if (!readStrict) { var buffer = InternalMemoryPool.GetBuffer(); // use MessagePackSerializer.Pool! var len = FillFromStream(stream, ref buffer); return(Decode(new ArraySegment <byte>(buffer, 0, len))); } int blockSize; var bytes = MessagePackBinary.ReadMessageBlockFromStreamUnsafe(stream, false, out blockSize); return(Decode(new ArraySegment <byte>(bytes, 0, blockSize))); }
public static T Deserialize <T>(Stream stream, IFormatterResolver resolver, bool readStrict) { if (!readStrict) { var buffer = InternalMemoryPool.GetBuffer(); // use MessagePackSerializer.Pool! var len = FillFromStream(stream, ref buffer); return(DeserializeCore <T>(new ArraySegment <byte>(buffer, 0, len), resolver)); } int blockSize; var bytes = MessagePackBinary.ReadMessageBlockFromStreamUnsafe(stream, false, out blockSize); return(DeserializeCore <T>(new ArraySegment <byte>(bytes, 0, blockSize), resolver)); }
public static T Deserialize <T>(Stream stream, IFormatterResolver resolver, bool readStrict) { if (resolver == null) { resolver = DefaultResolver; } var formatter = resolver.GetFormatterWithVerify <T>(); if (!readStrict) { #if NETSTANDARD1_4 && !NET45 var ms = stream as MemoryStream; if (ms != null) { // optimize for MemoryStream ArraySegment <byte> buffer; if (ms.TryGetBuffer(out buffer)) { int readSize; return(formatter.Deserialize(buffer.Array, buffer.Offset, resolver, out readSize)); } } #endif // no else. { var buffer = InternalMemoryPool.GetBuffer(); FillFromStream(stream, ref buffer); int readSize; return(formatter.Deserialize(buffer, 0, resolver, out readSize)); } } else { int _; var bytes = MessagePackBinary.ReadMessageBlockFromStreamUnsafe(stream, false, out _); int readSize; return(formatter.Deserialize(bytes, 0, resolver, out readSize)); } }
public override T Deserialize <T>(Stream stream, IFormatterResolver resolver, bool readStrict) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } if (!readStrict) { var buffer = MessagePack.Internal.InternalMemoryPool.GetBuffer(); // use MessagePackSerializer.Pool! var len = FillFromStream(stream, ref buffer); return(DeserializeCore <T>(new ArraySegment <byte>(buffer, 0, len), resolver, out int readSize)); } else { int blockSize; var bytes = MessagePackBinary.ReadMessageBlockFromStreamUnsafe(stream, false, out blockSize); return(DeserializeCore <T>(new ArraySegment <byte>(bytes, 0, blockSize), resolver, out int readSize)); } }