Esempio n. 1
0
        private void Update()
        {
            int handledMessages = 0;

            // Handle Server messages
            while (_inboundServerMessages.Count > 0 && handledMessages++ < _settings.maxHandledMessagesPerFrame)
            {
                NetworkMessage message = _inboundServerMessages.Dequeue();
                if (!_defaultServerMessageParser.ParseMessage(message))
                {
                    _logger.Debug("Message of type: " + message.GetType() + " was not handled, sending it to custom server parser");
                    // Message was not handled by default handler, try calling a custom one
                    foreach (CustomMessageParser parser in customServerMessageParser)
                    {
                        parser.Invoke(message);
                    }
                }
            }
            handledMessages = 0;
            // Handle Client messages
            while (_inboundClientMessages.Count > 0 && handledMessages++ < _settings.maxHandledMessagesPerFrame)
            {
                NetworkMessage message = _inboundClientMessages.Dequeue();
                if (!_defaultClientMessageParser.ParseMessage(message))
                {
                    _logger.Debug("Message of type: " + message.GetType() + " was not handled, sending it to custom client parser");
                    // Message was not handled by default handler, try calling a custom one
                    foreach (CustomMessageParser parser in customClientMessageParser)
                    {
                        parser.Invoke(message);
                    }
                }
            }
        }
Esempio n. 2
0
        public static BaseMessageParser BuildParser(SPPMessage msg)
        {
            BaseMessageParser b = null;

            for (int i = 0; i < RegisteredParsers.Length; i++)
            {
                var act = (object)Activator.CreateInstance(RegisteredParsers[i]);
                if (act.GetType() == RegisteredParsers[i])
                {
                    BaseMessageParser parser = (BaseMessageParser)act;
                    if (parser.HandledType == msg.Id)
                    {
                        SentrySdk.ConfigureScope(scope =>
                        {
                            scope.SetTag("msg-data-available", "true");
                            scope.SetExtra("msg-type", msg.Type.ToString());
                            scope.SetExtra("msg-id", msg.Id);
                            scope.SetExtra("msg-size", msg.Size);
                            scope.SetExtra("msg-total-size", msg.TotalPacketSize);
                            scope.SetExtra("msg-crc16", msg.CRC16);
                            scope.SetExtra("msg-payload", Hex.Dump(msg.Payload, 512, false, false, false));
                        });

                        parser.ParseMessage(msg);
                        b = parser;
                        break;
                    }
                }
            }
            return(b);
        }
        public static BaseMessageParser BuildParser(SPPMessage msg)
        {
            BaseMessageParser b = null;

            for (int i = 0; i < RegisteredParsers.Length; i++)
            {
                var act = (object)Activator.CreateInstance(RegisteredParsers[i]);
                if (act.GetType() == RegisteredParsers[i])
                {
                    BaseMessageParser parser = (BaseMessageParser)act;
                    if (parser.HandledType == msg.Id)
                    {
                        parser.ParseMessage(msg);
                        b = parser;
                        break;
                    }
                }
            }
            return(b);
        }
        public static BaseMessageParser?BuildParser(SPPMessage msg)
        {
            BaseMessageParser?b = null;

            for (int i = 0; i < RegisteredParsers.Length; i++)
            {
                var act = Activator.CreateInstance(RegisteredParsers[i]);
                if (act?.GetType() == RegisteredParsers[i])
                {
                    BaseMessageParser parser = (BaseMessageParser)act;
                    if (parser.HandledType == msg.Id)
                    {
                        SentrySdk.ConfigureScope(scope =>
                        {
                            scope.SetTag("msg-data-available", "true");
                            scope.SetExtra("msg-type", msg.Type.ToString());
                            scope.SetExtra("msg-id", msg.Id);
                            scope.SetExtra("msg-size", msg.Size);
                            scope.SetExtra("msg-total-size", msg.TotalPacketSize);
                            scope.SetExtra("msg-crc16", msg.Crc16);
                            scope.SetExtra("msg-payload", HexUtils.Dump(msg.Payload, 512, false, false, false));
                        });

                        parser.ParseMessage(msg);
                        b = parser;
                        break;
                    }
                }
            }

            if (b != null)
            {
                foreach (var hook in ScriptManager.Instance.DecoderHooks)
                {
                    hook?.OnDecoderCreated(msg, ref b);
                }
            }

            return(b);
        }