/// <summary>Serializes the asynchronous.</summary> /// <param name="formatter">The formatter.</param> /// <param name="item">The item.</param> /// <param name="serializerSettings">The <see cref="JsonSerializerSettings"/> used to configure the <see cref="JsonSerializer"/>.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <param name="initialBufferSize">The initial buffer size.</param> /// <returns></returns> public static Task <ArraySegment <byte> > WriteToMemoryPoolAsync(this IJsonMessageFormatter formatter, object item, JsonSerializerSettings serializerSettings, Encoding effectiveEncoding = null, int initialBufferSize = c_initialBufferSize) { return (#if NET40 TaskEx #else Task #endif .FromResult(WriteToMemoryPool(formatter, item, serializerSettings, effectiveEncoding, initialBufferSize))); //#if NET40 // await TaskConstants.Completed; // return SerializeToByteArraySegment(formatter, item, serializerSettings, effectiveEncoding, initialBufferSize); //#else // using (var pooledPipe = PipelineManager.Create()) // { // var pipe = pooledPipe.Object; // var outputStream = new PipelineStream(pipe, initialBufferSize); // formatter.WriteToStream(item?.GetType(), item, outputStream, effectiveEncoding, serializerSettings); // await pipe.FlushAsync(); // var readBuffer = (await pipe.Reader.ReadAsync()).Buffer; // var length = (int)readBuffer.Length; // if (c_zeroSize == length) { return s_emptySegment; } // var buffer = BufferManager.Shared.Rent(length); // readBuffer.CopyTo(buffer); // return new ArraySegment<byte>(buffer, 0, length); // } //#endif }
/// <summary>Serializes the specified item.</summary> /// <param name="formatter">The formatter.</param> /// <param name="item">The item.</param> /// <param name="serializerSettings">The <see cref="JsonSerializerSettings"/> used to configure the <see cref="JsonSerializer"/>.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <param name="initialBufferSize">The initial buffer size.</param> /// <returns></returns> public static ArraySegment <byte> WriteToMemoryPool(this IJsonMessageFormatter formatter, object item, JsonSerializerSettings serializerSettings, Encoding effectiveEncoding = null, int initialBufferSize = c_initialBufferSize) { //#if NET40 using (var pooledStream = BufferManagerOutputStreamManager.Create()) { var outputStream = pooledStream.Object; outputStream.Reinitialize(initialBufferSize, BufferManager.Shared); formatter.WriteToStream(item?.GetType(), item, outputStream, effectiveEncoding, serializerSettings); return(outputStream.ToArraySegment()); } //#else // using (var pooledPipe = PipelineManager.Create()) // { // var pipe = pooledPipe.Object; // var outputStream = new PipelineStream(pipe, initialBufferSize); // formatter.WriteToStream(item?.GetType(), item, outputStream, effectiveEncoding, serializerSettings); // pipe.Flush(); // var readBuffer = pipe.Reader.ReadAsync().GetResult().Buffer; // var length = (int)readBuffer.Length; // if (c_zeroSize == length) { return s_emptySegment; } // var buffer = BufferManager.Shared.Rent(length); // readBuffer.CopyTo(buffer); // return new ArraySegment<byte>(buffer, 0, length); // } //#endif }
/// <summary>Serializes the asynchronous.</summary> /// <param name="formatter">The formatter.</param> /// <param name="item">The item.</param> /// <param name="serializerSettings">The <see cref="JsonSerializerSettings"/> used to configure the <see cref="JsonSerializer"/>.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <param name="initialBufferSize">The initial buffer size.</param> /// <returns></returns> public static Task <byte[]> SerializeAsync(this IJsonMessageFormatter formatter, object item, JsonSerializerSettings serializerSettings, Encoding effectiveEncoding = null, int initialBufferSize = c_initialBufferSize) { return (#if NET40 TaskEx #else Task #endif .FromResult(Serialize(formatter, item, serializerSettings, effectiveEncoding, initialBufferSize))); //#if NET40 // await TaskConstants.Completed; // return SerializeToBytes(formatter, item, serializerSettings, effectiveEncoding, initialBufferSize); //#else // using (var pooledPipe = PipelineManager.Create()) // { // var pipe = pooledPipe.Object; // var outputStream = new PipelineStream(pipe, initialBufferSize); // formatter.WriteToStream(item?.GetType(), item, outputStream, effectiveEncoding, serializerSettings); // await pipe.FlushAsync(); // var readBuffer = (await pipe.Reader.ReadAsync()).Buffer; // var length = (int)readBuffer.Length; // if (c_zeroSize == length) { return EmptyArray<byte>.Instance; } // return readBuffer.ToArray(); // } //#endif }
/// <summary>Deserializes the asynchronous.</summary> /// <typeparam name="T"></typeparam> /// <param name="formatter">The formatter.</param> /// <param name="serializedObject">The serialized object.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <returns></returns> public static Task <T> DeserializeAsync <T>(this IJsonMessageFormatter formatter, byte[] serializedObject, Encoding effectiveEncoding) { return (#if NET40 TaskEx #else Task #endif .FromResult(Deserialize <T>(formatter, serializedObject, null, effectiveEncoding))); }
/// <summary>Deserializes the asynchronous.</summary> /// <typeparam name="T"></typeparam> /// <param name="formatter">The formatter.</param> /// <param name="serializedObject">The serialized object.</param> /// <param name="offset"></param> /// <param name="count"></param> /// <param name="serializerSettings">The <see cref="JsonSerializerSettings"/> used to configure the <see cref="JsonSerializer"/>.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <returns></returns> public static Task <T> DeserializeAsync <T>(this IJsonMessageFormatter formatter, byte[] serializedObject, int offset, int count, JsonSerializerSettings serializerSettings, Encoding effectiveEncoding = null) { return (#if NET40 TaskEx #else Task #endif .FromResult(Deserialize <T>(formatter, serializedObject, offset, count, serializerSettings, effectiveEncoding))); }
/// <summary>Deserializes the asynchronous.</summary> /// <param name="formatter">The formatter.</param> /// <param name="type">The type of the object to deserialize.</param> /// <param name="serializedObject">The serialized object.</param> /// <param name="offset"></param> /// <param name="count"></param> /// <param name="effectiveEncoding">The encoding.</param> /// <returns></returns> public static Task <object> DeserializeAsync(this IJsonMessageFormatter formatter, Type type, byte[] serializedObject, int offset, int count, Encoding effectiveEncoding) { return (#if NET40 TaskEx #else Task #endif .FromResult(Deserialize(formatter, type, serializedObject, offset, count, null, effectiveEncoding))); }
/// <summary>Deserializes the asynchronous.</summary> /// <param name="formatter">The formatter.</param> /// <param name="type">The type of the object to deserialize.</param> /// <param name="serializedObject">The serialized object.</param> /// <param name="serializerSettings">The <see cref="JsonSerializerSettings"/> used to configure the <see cref="JsonSerializer"/>.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <returns></returns> public static Task <object> DeserializeAsync(this IJsonMessageFormatter formatter, Type type, byte[] serializedObject, JsonSerializerSettings serializerSettings, Encoding effectiveEncoding = null) { return (#if NET40 TaskEx #else Task #endif .FromResult(Deserialize(formatter, type, serializedObject, serializerSettings, effectiveEncoding))); }
/// <summary>Deserializes the specified serialized object.</summary> /// <param name="formatter">The formatter.</param> /// <param name="type">The type of the object to deserialize.</param> /// <param name="serializedObject">The serialized object.</param> /// <param name="offset"></param> /// <param name="count"></param> /// <param name="serializerSettings">The <see cref="JsonSerializerSettings"/> used to configure the <see cref="JsonSerializer"/>.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <returns></returns> public static object Deserialize(this IJsonMessageFormatter formatter, Type type, byte[] serializedObject, int offset, int count, JsonSerializerSettings serializerSettings, Encoding effectiveEncoding = null) { if (null == serializedObject) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.serializedObject); } using (var ms = new MemoryStream(serializedObject, offset, count)) { return(formatter.ReadFromStream(type, ms, effectiveEncoding, serializerSettings)); } }
/// <summary>Serializes the asynchronous.</summary> /// <param name="formatter">The formatter.</param> /// <param name="item">The item.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <param name="initialBufferSize">The initial buffer size.</param> /// <returns></returns> public static Task <ArraySegment <byte> > WriteToMemoryPoolAsync(this IJsonMessageFormatter formatter, object item, Encoding effectiveEncoding, int initialBufferSize = c_initialBufferSize) { return (#if NET40 TaskEx #else Task #endif .FromResult(WriteToMemoryPool(formatter, item, null, effectiveEncoding, initialBufferSize))); //#if NET40 // return TaskEx.FromResult(SerializeToByteArraySegment(formatter, item, null, effectiveEncoding, initialBufferSize)); //#else // return SerializeToByteArraySegmentAsync(formatter, item, null, effectiveEncoding, initialBufferSize); //#endif }
/// <summary>Serializes the asynchronous.</summary> /// <param name="formatter">The formatter.</param> /// <param name="item">The item.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <param name="initialBufferSize">The initial buffer size.</param> /// <returns></returns> public static Task <byte[]> SerializeAsync(this IJsonMessageFormatter formatter, object item, Encoding effectiveEncoding, int initialBufferSize = c_initialBufferSize) { return (#if NET40 TaskEx #else Task #endif .FromResult(Serialize(formatter, item, null, effectiveEncoding, initialBufferSize))); //#if NET40 // return TaskEx.FromResult(SerializeToBytes(formatter, item, null, effectiveEncoding, initialBufferSize)); //#else // return SerializeToBytesAsync(formatter, item, null, effectiveEncoding, initialBufferSize); //#endif }
public JsonMessageFormatterTests() { _formatter = JsonMessageFormatter.DefaultInstance; }
/// <summary>Serializes the specified item.</summary> /// <param name="formatter">The formatter.</param> /// <param name="item">The item.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <param name="initialBufferSize">The initial buffer size.</param> /// <returns></returns> public static ArraySegment <byte> WriteToMemoryPool(this IJsonMessageFormatter formatter, object item, Encoding effectiveEncoding, int initialBufferSize = c_initialBufferSize) { return(WriteToMemoryPool(formatter, item, null, effectiveEncoding, initialBufferSize)); }
/// <summary>Deserializes the specified serialized object.</summary> /// <typeparam name="T"></typeparam> /// <param name="formatter">The formatter.</param> /// <param name="serializedObject">The serialized object.</param> /// <param name="offset"></param> /// <param name="count"></param> /// <param name="serializerSettings">The <see cref="JsonSerializerSettings"/> used to configure the <see cref="JsonSerializer"/>.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <returns></returns> public static T Deserialize <T>(this IJsonMessageFormatter formatter, byte[] serializedObject, int offset, int count, JsonSerializerSettings serializerSettings, Encoding effectiveEncoding = null) { return((T)Deserialize(formatter, typeof(T), serializedObject, offset, count, serializerSettings, effectiveEncoding)); }
/// <summary>Deserializes the specified serialized object.</summary> /// <typeparam name="T"></typeparam> /// <param name="formatter">The formatter.</param> /// <param name="serializedObject">The serialized object.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <returns></returns> public static T Deserialize <T>(this IJsonMessageFormatter formatter, byte[] serializedObject, Encoding effectiveEncoding) { return((T)Deserialize(formatter, typeof(T), serializedObject, null, effectiveEncoding)); }
/// <summary>Deserializes the specified serialized object.</summary> /// <param name="formatter">The formatter.</param> /// <param name="type">The type of the object to deserialize.</param> /// <param name="serializedObject">The serialized object.</param> /// <param name="offset"></param> /// <param name="count"></param> /// <param name="effectiveEncoding">The encoding.</param> /// <returns></returns> public static object Deserialize(this IJsonMessageFormatter formatter, Type type, byte[] serializedObject, int offset, int count, Encoding effectiveEncoding) { return(Deserialize(formatter, type, serializedObject, offset, count, null, effectiveEncoding)); }
/// <summary>Serializes the specified item.</summary> /// <param name="formatter">The formatter.</param> /// <param name="item">The item.</param> /// <param name="effectiveEncoding">The encoding.</param> /// <param name="initialBufferSize">The initial buffer size.</param> /// <returns></returns> public static byte[] Serialize(this IJsonMessageFormatter formatter, object item, Encoding effectiveEncoding, int initialBufferSize = c_initialBufferSize) { return(Serialize(formatter, item, null, effectiveEncoding, initialBufferSize)); }