public override Duration Deserialize(ushort protocolVersion, byte[] buffer, int offset, int length, IColumnInfo typeInfo) { var months = (int)VintSerializer.ReadVInt(buffer, ref offset); var days = (int)VintSerializer.ReadVInt(buffer, ref offset); var nanoseconds = VintSerializer.ReadVInt(buffer, ref offset); return(new Duration(months, days, nanoseconds)); }
public override byte[] Serialize(ushort protocolVersion, Duration value) { var lengthMonths = VintSerializer.WriteVInt(value.Months, EncodingBuffers.Value[0]); var lengthDays = VintSerializer.WriteVInt(value.Days, EncodingBuffers.Value[1]); var lengthNanos = VintSerializer.WriteVInt(value.Nanoseconds, EncodingBuffers.Value[2]); // Can be improved once the buffer pool is made available for serializers var buffer = new byte[lengthMonths + lengthDays + lengthNanos]; var offset = 0; Buffer.BlockCopy(EncodingBuffers.Value[0], 0, buffer, offset, lengthMonths); offset += lengthMonths; Buffer.BlockCopy(EncodingBuffers.Value[1], 0, buffer, offset, lengthDays); offset += lengthDays; Buffer.BlockCopy(EncodingBuffers.Value[2], 0, buffer, offset, lengthNanos); return(buffer); }