Beispiel #1
0
        public override void Write(object value, WriteBuffer buf, NpgsqlParameter parameter)
        {
            var tid = (NpgsqlTid)value;

            buf.WriteUInt32(tid.BlockNumber);
            buf.WriteUInt16(tid.OffsetNumber);
        }
Beispiel #2
0
        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);
            }
        }