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); } } } }
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); }