Ejemplo n.º 1
0
        public static IPAddress ReadValue <TInput>(ref Buffers.Reader <TInput> reader, Field field)
        {
            if (field.WireType == WireType.Reference)
            {
                return((IPAddress)ReferenceCodec.ReadReference(ref reader, field, CodecFieldType));
            }

            var       length = reader.ReadVarUInt32();
            IPAddress result;

#if NET5_0_OR_GREATER
            if (reader.TryReadBytes((int)length, out var bytes))
            {
                result = new IPAddress(bytes);
            }
            else
            {
#endif
            var addressBytes = reader.ReadBytes(length);
            result = new IPAddress(addressBytes);
#if NET5_0_OR_GREATER
        }
#endif

            ReferenceCodec.RecordObject(reader.Session, result);
            return(result);
        }
Ejemplo n.º 2
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.º 3
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);
        }
Ejemplo n.º 4
0
 IPAddress IFieldCodec <IPAddress> .ReadValue <TInput>(ref Buffers.Reader <TInput> reader, Field field) => ReadValue(ref reader, field);
Ejemplo n.º 5
0
 IPEndPoint IFieldCodec <IPEndPoint> .ReadValue <TInput>(ref Buffers.Reader <TInput> reader, Field field) => ReadValue(ref reader, field);