/
dsrelax
/
Tarantool.Queue.NetCore
Обзор
Документация
Войти
/
dsrelax
/
Tarantool.Queue.NetCore
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Converters/ConverterTubeTask.cs
44 строки
2 KB
Дмитрий
Добавьте файлы проекта.
27 янв 2024, 11:19
27 янв 2024, 11:19
331f11f
Код
Авторство
О чём код?
using ProGaudi.MsgPack.Light; using Tarantool.Queues.Converters; namespace Tarantool.Queues.Model { public partial class TubeTask { const int ITEM_COUNT = 3; public class Converter : ConverterBase<TubeTask> { private IMsgPackConverter<ulong> _ulongConverter = null!; public override TubeTask Read(IMsgPackReader reader) { InitializeIfNeeded(); var arrayLength = reader.ReadArrayLength(); if (arrayLength.HasValue) { var entity = new TubeTask(); FillEntity(entity, reader, arrayLength.Value); return entity; } else return null!; } protected override void FillEntity(TubeTask entity, IMsgPackReader reader, uint mapLength) { if(mapLength != ITEM_COUNT) throw new ArgumentException($"Invalid Task tuple length: {ITEM_COUNT} is expected, but got {mapLength}."); entity.TaskId = _ulongConverter.Read(reader); var stateString = StringConverter.Read(reader); entity.TaskState = (QueueTaskState) Convert.ToUInt16(stateString.ToCharArray()[0]); entity.TaskData = StringConverter.Read(reader); } protected override void InitializeConverter(MsgPackContext context) { _ulongConverter = context.GetConverter<ulong>(); } } } }