/
dev-npgsql
/
npgsql
Обзор
Документация
Войти
/
dev-npgsql
/
npgsql
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
v6.0.13
src/Npgsql/BackendMessages/CopyMessages.cs
94 строки
2 KB
Shay Rojansky
Apply file-scoped namespaces for 6.0 (#4298)
28 янв 2022, 15:13
Не верифицирован
28 янв 2022, 15:13
2e0ad2d
Код
Авторство
О чём код?
using System; using System.Collections.Generic; using Npgsql.Internal; using Npgsql.Util; namespace Npgsql.BackendMessages; abstract class CopyResponseMessageBase : IBackendMessage { public abstract BackendMessageCode Code { get; } internal bool IsBinary { get; private set; } internal short NumColumns { get; private set; } internal List<FormatCode> ColumnFormatCodes { get; } internal CopyResponseMessageBase() { ColumnFormatCodes = new List<FormatCode>(); } internal void Load(NpgsqlReadBuffer buf) { ColumnFormatCodes.Clear(); var binaryIndicator = buf.ReadByte(); IsBinary = binaryIndicator switch { 0 => false, 1 => true, _ => throw new Exception("Invalid binary indicator in CopyInResponse message: " + binaryIndicator) }; NumColumns = buf.ReadInt16(); for (var i = 0; i < NumColumns; i++) ColumnFormatCodes.Add((FormatCode)buf.ReadInt16()); } } class CopyInResponseMessage : CopyResponseMessageBase { public override BackendMessageCode Code => BackendMessageCode.CopyInResponse; internal new CopyInResponseMessage Load(NpgsqlReadBuffer buf) { base.Load(buf); return this; } } class CopyOutResponseMessage : CopyResponseMessageBase { public override BackendMessageCode Code => BackendMessageCode.CopyOutResponse; internal new CopyOutResponseMessage Load(NpgsqlReadBuffer buf) { base.Load(buf); return this; } } class CopyBothResponseMessage : CopyResponseMessageBase { public override BackendMessageCode Code => BackendMessageCode.CopyBothResponse; internal new CopyBothResponseMessage Load(NpgsqlReadBuffer buf) { base.Load(buf); return this; } } /// <summary> /// Note that this message doesn't actually contain the data, but only the length. Data is processed /// directly from the connector's buffer. /// </summary> class CopyDataMessage : IBackendMessage { public BackendMessageCode Code => BackendMessageCode.CopyData; public int Length { get; private set; } internal CopyDataMessage Load(int len) { Length = len; return this; } } class CopyDoneMessage : IBackendMessage { public BackendMessageCode Code => BackendMessageCode.CopyDone; internal static readonly CopyDoneMessage Instance = new(); CopyDoneMessage() { } }