public override void Write(object value, WriteBuffer buf, NpgsqlParameter parameter) { var tid = (NpgsqlTid)value; buf.WriteUInt32(tid.BlockNumber); buf.WriteUInt16(tid.OffsetNumber); }
protected override async Task Write(object value, WriteBuffer buf, LengthCache lengthCache, NpgsqlParameter parameter, bool async, CancellationToken cancellationToken) { Debug.Assert(_members != null); var composite = (T)value; if (buf.WriteSpaceLeft < 4) { await buf.Flush(async, cancellationToken); } buf.WriteInt32(_members.Count); foreach (var fieldDescriptor in _members) { var fieldHandler = fieldDescriptor.Handler; var fieldValue = fieldDescriptor.GetValue(composite); if (buf.WriteSpaceLeft < 4) { await buf.Flush(async, cancellationToken); } buf.WriteUInt32(fieldDescriptor.OID); await fieldHandler.WriteWithLength(fieldValue, buf, lengthCache, null, async, cancellationToken); } }