public global::Server.SharedThings.Packets.ServerPackets.LoginSucceeded Deserialize(ref MessagePackReader reader, global::MessagePack.MessagePackSerializerOptions options)
        {
            if (reader.TryReadNil())
            {
                return(null);
            }

            IFormatterResolver formatterResolver = options.Resolver;
            var length        = reader.ReadArrayHeader();
            var __SessionId__ = default(string);

            for (int i = 0; i < length; i++)
            {
                var key = i;

                switch (key)
                {
                case 0:
                    __SessionId__ = formatterResolver.GetFormatterWithVerify <string>().Deserialize(ref reader, options);
                    break;

                default:
                    reader.Skip();
                    break;
                }
            }

            var ____result = new global::Server.SharedThings.Packets.ServerPackets.LoginSucceeded();

            ____result.SessionId = __SessionId__;
            return(____result);
        }
 private string ReadInvocationId(ref MessagePackReader reader) =>
 ReadString(ref reader, "invocationId");
        public global::Server.SharedThings.Packets.ServerPackets.Game.EntityUpdatePosition Deserialize(ref MessagePackReader reader, global::MessagePack.MessagePackSerializerOptions options)
        {
            if (reader.TryReadNil())
            {
                return(null);
            }

            IFormatterResolver formatterResolver = options.Resolver;
            var length = reader.ReadArrayHeader();
            var __Id__ = default(string);
            var __X__  = default(float);
            var __Y__  = default(float);

            for (int i = 0; i < length; i++)
            {
                var key = i;

                switch (key)
                {
                case 0:
                    __Id__ = formatterResolver.GetFormatterWithVerify <string>().Deserialize(ref reader, options);
                    break;

                case 1:
                    __X__ = reader.ReadSingle();
                    break;

                case 2:
                    __Y__ = reader.ReadSingle();
                    break;

                default:
                    reader.Skip();
                    break;
                }
            }

            var ____result = new global::Server.SharedThings.Packets.ServerPackets.Game.EntityUpdatePosition();

            ____result.Id = __Id__;
            ____result.X  = __X__;
            ____result.Y  = __Y__;
            return(____result);
        }
Ejemplo n.º 4
0
 public Tuple <T1> Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     if (reader.TryReadNil())
     {
         return(default);
Ejemplo n.º 5
0
 public ImmutableArray <T> Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     if (reader.TryReadNil())
     {
         return(default);
Ejemplo n.º 6
0
 public RgbaFloat Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     return(new RgbaFloat((float)reader.ReadDouble(), (float)reader.ReadDouble(), (float)reader.ReadDouble(), (float)reader.ReadDouble()));
 }
Ejemplo n.º 7
0
 public Result <T> Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     if (reader.IsNil)
     {
         return(default);
Ejemplo n.º 8
0
 public byte[] Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     return(reader.ReadBytes()?.ToArray());
 }
Ejemplo n.º 9
0
 public string Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     return(reader.ReadString());
 }
Ejemplo n.º 10
0
 public decimal Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     return(decimal.Parse(reader.ReadString(), CultureInfo.InvariantCulture));
 }
Ejemplo n.º 11
0
 public TimeSpan Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     return(new TimeSpan(reader.ReadInt64()));
 }
Ejemplo n.º 12
0
        public VersionRange?Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
        {
            if (reader.TryReadNil())
            {
                return(null);
            }

            // stack overflow mitigation - see https://github.com/neuecc/MessagePack-CSharp/security/advisories/GHSA-7q36-4xx7-xcxf
            options.Security.DepthStep(ref reader);

            try
            {
                FloatRange?  floatRange     = null;
                bool?        isMaxInclusive = null;
                bool?        isMinInclusive = null;
                NuGetVersion?maxVersion     = null;
                NuGetVersion?minVersion     = null;
                string?      originalString = null;

                int propertyCount = reader.ReadMapHeader();

                for (var propertyIndex = 0; propertyIndex < propertyCount; ++propertyIndex)
                {
                    switch (reader.ReadString())
                    {
                    case FloatRangePropertyName:
                        floatRange = FloatRangeFormatter.Instance.Deserialize(ref reader, options);
                        break;

                    case IsMaxInclusivePropertyName:
                        isMaxInclusive = reader.ReadBoolean();
                        break;

                    case IsMinInclusivePropertyName:
                        isMinInclusive = reader.ReadBoolean();
                        break;

                    case MaxVersionPropertyName:
                        maxVersion = NuGetVersionFormatter.Instance.Deserialize(ref reader, options);
                        break;

                    case MinVersionPropertyName:
                        minVersion = NuGetVersionFormatter.Instance.Deserialize(ref reader, options);
                        break;

                    case OriginalStringPropertyName:
                        originalString = reader.ReadString();
                        break;

                    default:
                        reader.Skip();
                        break;
                    }
                }

                Assumes.True(isMinInclusive.HasValue);
                Assumes.True(isMaxInclusive.HasValue);

                return(new VersionRange(
                           minVersion,
                           isMinInclusive.Value,
                           maxVersion,
                           isMaxInclusive.Value,
                           floatRange,
                           originalString));
            }
            finally
            {
                // stack overflow mitigation - see https://github.com/neuecc/MessagePack-CSharp/security/advisories/GHSA-7q36-4xx7-xcxf
                reader.Depth--;
            }
        }
Ejemplo n.º 13
0
        public global::Fenix.Packet Deserialize(ref MessagePackReader reader, global::MessagePack.MessagePackSerializerOptions options)
        {
            if (reader.TryReadNil())
            {
                return(null);
            }

            options.Security.DepthStep(ref reader);
            IFormatterResolver formatterResolver = options.Resolver;
            var length          = reader.ReadArrayHeader();
            var __Id__          = default(ulong);
            var __ProtoCode__   = default(uint);
            var __FromHostId__  = default(uint);
            var __ToHostId__    = default(uint);
            var __FromActorId__ = default(uint);
            var __ToActorId__   = default(uint);
            var __Payload__     = default(byte[]);

            for (int i = 0; i < length; i++)
            {
                var key = i;

                switch (key)
                {
                case 0:
                    __Id__ = reader.ReadUInt64();
                    break;

                case 1:
                    __ProtoCode__ = reader.ReadUInt32();
                    break;

                case 2:
                    __FromHostId__ = reader.ReadUInt32();
                    break;

                case 3:
                    __ToHostId__ = reader.ReadUInt32();
                    break;

                case 4:
                    __FromActorId__ = reader.ReadUInt32();
                    break;

                case 5:
                    __ToActorId__ = reader.ReadUInt32();
                    break;

                case 6:
                    __Payload__ = formatterResolver.GetFormatterWithVerify <byte[]>().Deserialize(ref reader, options);
                    break;

                default:
                    reader.Skip();
                    break;
                }
            }

            var ____result = new global::Fenix.Packet();

            ____result.Id          = __Id__;
            ____result.ProtoCode   = __ProtoCode__;
            ____result.FromHostId  = __FromHostId__;
            ____result.ToHostId    = __ToHostId__;
            ____result.FromActorId = __FromActorId__;
            ____result.ToActorId   = __ToActorId__;
            ____result.Payload     = __Payload__;
            reader.Depth--;
            return(____result);
        }
Ejemplo n.º 14
0
 public global::Fenix.Common.DefaultErrCode Deserialize(ref MessagePackReader reader, global::MessagePack.MessagePackSerializerOptions options)
 {
     return((global::Fenix.Common.DefaultErrCode)reader.ReadInt16());
 }
Ejemplo n.º 15
0
        public string Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
        {
            var s = reader.ReadString();

            return(s + s);
        }
Ejemplo n.º 16
0
        async Task HandleMessageAsync()
        {
            var ct     = Context.CallContext.CancellationToken;
            var reader = Context.RequestStream !;
            var writer = Context.ResponseStream !;

            var handlers = StreamingHubHandlerRepository.GetHandlers(Context.MethodHandler);

            // Main loop of StreamingHub.
            // Be careful to allocation and performance.
            while (await reader.MoveNext(ct)) // must keep SyncContext.
            {
                (int methodId, int messageId, int offset) FetchHeader(byte[] msgData)
                {
                    var messagePackReader = new MessagePackReader(msgData);

                    var length = messagePackReader.ReadArrayHeader();

                    if (length == 2)
                    {
                        // void: [methodId, [argument]]
                        var mid      = messagePackReader.ReadInt32();
                        var consumed = (int)messagePackReader.Consumed;

                        return(mid, -1, consumed);
                    }
                    else if (length == 3)
                    {
                        // T: [messageId, methodId, [argument]]
                        var msgId    = messagePackReader.ReadInt32();
                        var metId    = messagePackReader.ReadInt32();
                        var consumed = (int)messagePackReader.Consumed;
                        return(metId, msgId, consumed);
                    }
                    else
                    {
                        throw new InvalidOperationException("Invalid data format.");
                    }
                }

                var data = reader.Current;
                var(methodId, messageId, offset) = FetchHeader(data);

                if (messageId == -1)
                {
                    if (handlers.TryGetValue(methodId, out var handler))
                    {
                        var context = new StreamingHubContext() // create per invoke.
                        {
                            AsyncWriterLock   = Context.AsyncWriterLock,
                            SerializerOptions = handler.serializerOptions,
                            HubInstance       = this,
                            ServiceContext    = Context,
                            Request           = new ArraySegment <byte>(data, offset, data.Length - offset),
                            Path      = handler.ToString(),
                            MethodId  = handler.MethodId,
                            MessageId = -1,
                            Timestamp = DateTime.UtcNow
                        };

                        var isErrorOrInterrupted = false;
                        Context.MethodHandler.logger.BeginInvokeHubMethod(context, context.Request, handler.RequestType);
                        try
                        {
                            await handler.MethodBody.Invoke(context);
                        }
                        catch (Exception ex)
                        {
                            isErrorOrInterrupted = true;
                            Context.MethodHandler.logger.Error(ex, context);
                        }
                        finally
                        {
                            Context.MethodHandler.logger.EndInvokeHubMethod(context, context.responseSize, context.responseType, (DateTime.UtcNow - context.Timestamp).TotalMilliseconds, isErrorOrInterrupted);
                        }
                    }
                    else
                    {
                        throw new InvalidOperationException("Handler not found in received methodId, methodId:" + methodId);
                    }
                }
                else
                {
                    if (handlers.TryGetValue(methodId, out var handler))
                    {
                        var context = new StreamingHubContext() // create per invoke.
                        {
                            AsyncWriterLock   = Context.AsyncWriterLock,
                            SerializerOptions = handler.serializerOptions,
                            HubInstance       = this,
                            ServiceContext    = Context,
                            Request           = new ArraySegment <byte>(data, offset, data.Length - offset),
                            Path      = handler.ToString(),
                            MethodId  = handler.MethodId,
                            MessageId = messageId,
                            Timestamp = DateTime.UtcNow
                        };

                        var isErrorOrInterrupted = false;
                        Context.MethodHandler.logger.BeginInvokeHubMethod(context, context.Request, handler.RequestType);
                        try
                        {
                            await handler.MethodBody.Invoke(context);
                        }
                        catch (ReturnStatusException ex)
                        {
                            await context.WriteErrorMessage((int)ex.StatusCode, ex.Detail, null, false);
                        }
                        catch (Exception ex)
                        {
                            isErrorOrInterrupted = true;
                            Context.MethodHandler.logger.Error(ex, context);
                            await context.WriteErrorMessage((int)StatusCode.Internal, $"An error occurred while processing handler '{handler.ToString()}'.", ex, Context.MethodHandler.isReturnExceptionStackTraceInErrorDetail);
                        }
                        finally
                        {
                            Context.MethodHandler.logger.EndInvokeHubMethod(context, context.responseSize, context.responseType, (DateTime.UtcNow - context.Timestamp).TotalMilliseconds, isErrorOrInterrupted);
                        }
                    }
                    else
                    {
                        throw new InvalidOperationException("Handler not found in received methodId, methodId:" + methodId);
                    }
                }
            }
        }
Ejemplo n.º 17
0
 public Vector2 Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     return(new Vector2((float)reader.ReadDouble(), (float)reader.ReadDouble()));
 }
Ejemplo n.º 18
0
 public global::UnityEngine.GradientMode Deserialize(ref MessagePackReader reader, global::MessagePack.MessagePackSerializerOptions options)
 {
     return((global::UnityEngine.GradientMode)reader.ReadInt32());
 }
Ejemplo n.º 19
0
        public override T Deserialize(ref MessagePackReader reader)
        {
            ulong value = reader.ReadUInt64();

            return(MessagePackUnsafeUtility.As <ulong, T>(ref value));
        }
Ejemplo n.º 20
0
        public global::UnityEngine.Matrix4x4 Deserialize(ref MessagePackReader reader, global::MessagePack.MessagePackSerializerOptions options)
        {
            if (reader.IsNil)
            {
                throw new InvalidOperationException("typecode is null, struct not supported");
            }

            var length  = reader.ReadArrayHeader();
            var __m00__ = default(float);
            var __m10__ = default(float);
            var __m20__ = default(float);
            var __m30__ = default(float);
            var __m01__ = default(float);
            var __m11__ = default(float);
            var __m21__ = default(float);
            var __m31__ = default(float);
            var __m02__ = default(float);
            var __m12__ = default(float);
            var __m22__ = default(float);
            var __m32__ = default(float);
            var __m03__ = default(float);
            var __m13__ = default(float);
            var __m23__ = default(float);
            var __m33__ = default(float);

            for (int i = 0; i < length; i++)
            {
                var key = i;
                switch (key)
                {
                case 0:
                    __m00__ = reader.ReadSingle();
                    break;

                case 1:
                    __m10__ = reader.ReadSingle();
                    break;

                case 2:
                    __m20__ = reader.ReadSingle();
                    break;

                case 3:
                    __m30__ = reader.ReadSingle();
                    break;

                case 4:
                    __m01__ = reader.ReadSingle();
                    break;

                case 5:
                    __m11__ = reader.ReadSingle();
                    break;

                case 6:
                    __m21__ = reader.ReadSingle();
                    break;

                case 7:
                    __m31__ = reader.ReadSingle();
                    break;

                case 8:
                    __m02__ = reader.ReadSingle();
                    break;

                case 9:
                    __m12__ = reader.ReadSingle();
                    break;

                case 10:
                    __m22__ = reader.ReadSingle();
                    break;

                case 11:
                    __m32__ = reader.ReadSingle();
                    break;

                case 12:
                    __m03__ = reader.ReadSingle();
                    break;

                case 13:
                    __m13__ = reader.ReadSingle();
                    break;

                case 14:
                    __m23__ = reader.ReadSingle();
                    break;

                case 15:
                    __m33__ = reader.ReadSingle();
                    break;

                default:
                    reader.Skip();
                    break;
                }
            }

            var ____result = default(global::UnityEngine.Matrix4x4);

            ____result.m00 = __m00__;
            ____result.m10 = __m10__;
            ____result.m20 = __m20__;
            ____result.m30 = __m30__;
            ____result.m01 = __m01__;
            ____result.m11 = __m11__;
            ____result.m21 = __m21__;
            ____result.m31 = __m31__;
            ____result.m02 = __m02__;
            ____result.m12 = __m12__;
            ____result.m22 = __m22__;
            ____result.m32 = __m32__;
            ____result.m03 = __m03__;
            ____result.m13 = __m13__;
            ____result.m23 = __m23__;
            ____result.m33 = __m33__;
            return(____result);
        }
 public override bool Deserialize(MessagePackReader reader)
 {
     return(reader.ReadBool());
 }
        public StackItem Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
        {
            var count = reader.ReadArrayHeader();

            if (count != 2)
            {
                throw new MessagePackSerializationException($"Invalid StackItem Array Header {count}");
            }

            var type = options.Resolver.GetFormatterWithVerify <StackItemType>().Deserialize(ref reader, options);

            switch (type)
            {
            case StackItemType.Any:
                reader.ReadNil();
                return(StackItem.Null);

            case StackItemType.Boolean:
                return(reader.ReadBoolean() ? StackItem.True : StackItem.False);

            case StackItemType.Buffer:
            {
                var bytes = options.Resolver.GetFormatter <byte[]>().Deserialize(ref reader, options);
                return(new NeoBuffer(bytes));
            }

            case StackItemType.ByteString:
            {
                var bytes = options.Resolver.GetFormatter <byte[]>().Deserialize(ref reader, options);
                return(new NeoByteString(bytes));
            }

            case StackItemType.Integer:
            {
                var integer = options.Resolver.GetFormatterWithVerify <BigInteger>().Deserialize(ref reader, options);
                return(new NeoInteger(integer));
            }

            case StackItemType.InteropInterface:
            {
                var typeName = options.Resolver.GetFormatterWithVerify <string>().Deserialize(ref reader, options);
                return(new TraceInteropInterface(typeName));
            }

            case StackItemType.Pointer:
                reader.ReadNil();
                return(new NeoPointer(Array.Empty <byte>(), 0));

            case StackItemType.Map:
            {
                var map      = new NeoMap();
                var mapCount = reader.ReadMapHeader();
                for (int i = 0; i < mapCount; i++)
                {
                    var key = (PrimitiveType)Deserialize(ref reader, options);
                    map[key] = Deserialize(ref reader, options);
                }
                return(map);
            }

            case StackItemType.Array:
            case StackItemType.Struct:
            {
                var array = type == StackItemType.Array
                            ? new NeoArray()
                            : new NeoStruct();
                var arrayCount = reader.ReadArrayHeader();
                for (int i = 0; i < arrayCount; i++)
                {
                    array.Add(Deserialize(ref reader, options));
                }
                return(array);
            }
            }

            throw new MessagePackSerializationException($"Invalid StackItem {type}");
        }
Ejemplo n.º 23
0
 public ExecutionId Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     return(new ExecutionId(options.Resolver.GetFormatterWithVerify <System.Guid>().Deserialize(ref reader, options)));
 }
        public override T Deserialize(ref MessagePackReader reader)
        {
            int value = reader.ReadInt32();

            return(MessagePackUnsafeUtility.As <int, T>(ref value));
        }
 protected abstract object DeserializeObject(ref MessagePackReader reader, Type type, string field);
Ejemplo n.º 26
0
 public Int16 Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     return(reader.ReadInt16());
 }
Ejemplo n.º 27
0
 public global::Server.SharedThings.Packets.ServerPackets.Enums.CharacterCreateResponseType Deserialize(ref MessagePackReader reader, global::MessagePack.MessagePackSerializerOptions options)
 {
     return((global::Server.SharedThings.Packets.ServerPackets.Enums.CharacterCreateResponseType)reader.ReadInt32());
 }
Ejemplo n.º 28
0
 public int Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     return(reader.ReadInt32() * 10);
 }
        public void ReadSingle_CanReadDouble()
        {
            var reader = new MessagePackReader(Encode((ref MessagePackWriter w) => w.Write(1.23)));

            Assert.Equal(1.23f, reader.ReadSingle());
        }
Ejemplo n.º 30
0
 public int Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
 {
     throw new NotImplementedException();
 }