Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }