/
dev-npgsql
/
npgsql
Обзор
Документация
Войти
/
dev-npgsql
/
npgsql
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Npgsql/Internal/Converters/Networking/MacaddrConverter.cs
36 строк
1 KB
Nino Floris
Remove PgBufferedConverter virtual dispatch hop (#6574)
15 май 2026, 18:24
Не верифицирован
15 май 2026, 18:24
78d37a1
Код
Авторство
О чём код?
using System; using System.Diagnostics; using System.Net.NetworkInformation; // ReSharper disable once CheckNamespace namespace Npgsql.Internal.Converters; sealed class MacaddrConverter(bool macaddr8) : PgBufferedConverter<PhysicalAddress> { public override bool CanConvert(DataFormat format, out BufferRequirements bufferRequirements) { bufferRequirements = macaddr8 ? BufferRequirements.Create(Size.CreateUpperBound(8)) : BufferRequirements.CreateFixedSize(6); return format is DataFormat.Binary; } protected override Size BindValue(in BindContext context, PhysicalAddress value, ref object? writeState) => value.GetAddressBytes().Length; public override PhysicalAddress Read(PgReader reader) { var len = reader.CurrentRemaining; Debug.Assert(len is 6 or 8); var bytes = new byte[len]; reader.Read(bytes); return new PhysicalAddress(bytes); } public override void Write(PgWriter writer, PhysicalAddress value) { var bytes = value.GetAddressBytes(); if (!macaddr8 && bytes.Length is not 6) throw new ArgumentException("A macaddr value must be 6 bytes long."); writer.WriteBytes(bytes); } }