public void Deserialize <TInput>(ref Buffers.Reader <TInput> reader, PooledResponse <TResult> instance) { uint fieldId = 0; while (true) { var header = reader.ReadFieldHeader(); if (header.IsEndBaseOrEndObject) { break; } fieldId += header.FieldIdDelta; switch (fieldId) { case 1U: instance.Exception = _exceptionCodec.ReadValue(ref reader, header); break; case 0U: instance.TypedResult = _resultCodec.ReadValue(ref reader, header); break; default: reader.ConsumeUnknownField(header); break; } } }
public void Serialize <TBufferWriter>(ref Buffers.Writer <TBufferWriter> writer, PooledResponse <TResult> instance) where TBufferWriter : System.Buffers.IBufferWriter <byte> { if (instance.Exception is null) { _resultCodec.WriteField(ref writer, 0U, ResultType, instance.TypedResult); } else { _exceptionCodec.WriteField(ref writer, 1U, ExceptionType, instance.Exception); } }
public static void Return <T>(PooledResponse <T> obj) => TypedPool <T> .Pool.Return(obj);