public static void Serialize <T>(IArrayBufferWriter <byte> output, T obj, IFormatterResolver resolver) { using (var serializedData = MessagePackSerializer.SerializeUnsafe(obj, resolver)) { var serializedDataLen = serializedData.Count; if ((uint)serializedDataLen < NotCompressionSize) { // can't write direct, shoganai... serializedData.Span.CopyTo(output.GetSpan(serializedDataLen)); output.Advance(serializedDataLen); return; } #if NET451 var maxOutCount = LZ4Codec.MaximumOutputLength(serializedDataLen); var outputBuffer = output.GetBuffer(c_lz4PackageHeaderSize + maxOutCount); // write body var serializedBuffer = serializedData.Buffer; var lz4Length = LZ4Codec.Encode(serializedBuffer.Array, serializedBuffer.Offset, serializedBuffer.Count, outputBuffer.Array, outputBuffer.Offset + c_lz4PackageHeaderSize, outputBuffer.Count - c_lz4PackageHeaderSize); #else var maxOutCount = LZ4Codec.MaximumOutputSize(serializedDataLen); var outputSpan = output.GetSpan(c_lz4PackageHeaderSize + maxOutCount); // write body var lz4Length = LZ4Codec.Encode(serializedData.Span, outputSpan.Slice(c_lz4PackageHeaderSize)); #endif ref byte addr = ref output.Origin; MessagePackBinary.WriteExtensionFormatHeaderForceExt32Block(ref addr, 0, ExtensionTypeCode, lz4Length + 5); MessagePackBinary.WriteInt32ForceInt32Block(ref addr, 6, serializedDataLen); output.Advance(lz4Length + c_lz4PackageHeaderSize); }
public static void Serialize <T>(IArrayBufferWriter <byte> output, T obj) => Serialize(output, obj, null);
public static void Serialize(Type type, IArrayBufferWriter <byte> output, object obj) { GetOrAdd(type).serialize7.Invoke(output, obj); }
public static void Serialize(Type type, IArrayBufferWriter <byte> output, object obj, IFormatterResolver resolver) { GetOrAdd(type).serialize8.Invoke(output, obj, resolver); }
public static void Serialize <T>(IArrayBufferWriter <byte> output, T obj) { LZ4MessagePackSerializer.Serialize(output, obj, defaultResolver); }