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 static IPEndPoint ReadValue <TInput>(ref Buffers.Reader <TInput> reader, Field field) { if (field.WireType == WireType.Reference) { return((IPEndPoint)ReferenceCodec.ReadReference(ref reader, field, CodecFieldType)); } var referencePlaceholder = ReferenceCodec.CreateRecordPlaceholder(reader.Session); IPAddress address = default; ushort port = 0; int id = 0; Field header = default; while (true) { id = OrleansGeneratedCodeHelper.ReadHeader(ref reader, ref header, id); if (id == 1) { address = IPAddressCodec.ReadValue(ref reader, header); id = OrleansGeneratedCodeHelper.ReadHeader(ref reader, ref header, id); } if (id == 2) { port = UInt16Codec.ReadValue(ref reader, header); id = OrleansGeneratedCodeHelper.ReadHeaderExpectingEndBaseOrEndObject(ref reader, ref header, id); } if (id != -1) { reader.ConsumeUnknownField(header); } else { break; } } var result = new IPEndPoint(address, port); ReferenceCodec.RecordObject(reader.Session, result, referencePlaceholder); return(result); }