internal static void WriteRawBytes(ref byte destination, ref byte source, int sourceBytesToCopy, ref int idx) { //if (0u >= (uint)sourceBytesToCopy) { return; } MessagePackBinary.CopyMemory(ref source, ref Unsafe.AddByteOffset(ref destination, (IntPtr)idx), sourceBytesToCopy); idx += sourceBytesToCopy; }
public static void WriteRawBytes(ref MessagePackWriter writer, byte[] source, ref int idx) { var count = source.Length; writer.Ensure(idx, count); MessagePackBinary.CopyMemory(source, 0, writer._borrowedBuffer, idx, count); idx += count; }
private static byte[] ReadFast(ref MessagePackReader reader, ref byte position) { IntPtr offset = (IntPtr)1; var length = unchecked ( Unsafe.AddByteOffset(ref position, offset) << 8 | Unsafe.AddByteOffset(ref position, offset + 1)); var newBytes = new byte[length]; MessagePackBinary.CopyMemory(ref Unsafe.AddByteOffset(ref position, offset + 2), ref newBytes[0], length); reader.AdvanceWithinSpan(length + 3); return(newBytes); }
private static byte[] ReadFast(ref MessagePackReader reader, ref byte position) { IntPtr offset = (IntPtr)1; var length = Unsafe.AddByteOffset(ref position, offset); if (0u >= length) { reader.AdvanceWithinSpan(2); return(MessagePackBinary.Empty); } var newBytes = new byte[length]; MessagePackBinary.CopyMemory(ref Unsafe.AddByteOffset(ref position, offset + 1), ref newBytes[0], length); reader.AdvanceWithinSpan(length + 2); return(newBytes); }