private static void DispatchThreadImpl() { while (true) { if (!DispatchQueue.TryDequeue(out GameMessage entry)) { Thread.Sleep(10); continue; } try { OnGameMessage?.Invoke(entry); } catch (Exception e) { Logger.LogError(e.ToString()); } } // ReSharper disable once FunctionNeverReturns }
public void OnMessage(Object peer) { var p = peer as NetPeer; NetIncomingMessage msg; while ((msg = p.ReadMessage()) != null) { msg.Decrypt(this._algo); switch (msg.MessageType) { case NetIncomingMessageType.DiscoveryRequest: ResponseDiscovery(msg.SenderEndPoint); break; case NetIncomingMessageType.ConnectionApproval: String s = msg.ReadString(); if (s == NetworkSetting.Encryptionkey) { msg.SenderConnection.Approve(); } else { msg.SenderConnection.Deny(); } break; case NetIncomingMessageType.VerboseDebugMessage: case NetIncomingMessageType.DebugMessage: case NetIncomingMessageType.WarningMessage: case NetIncomingMessageType.ErrorMessage: Console.WriteLine(msg.ReadString()); break; case NetIncomingMessageType.StatusChanged: NetConnectionStatus status = (NetConnectionStatus)msg.ReadByte(); if (status == NetConnectionStatus.Connected) { Console.WriteLine(NetUtility.ToHexString(msg.SenderConnection.RemoteUniqueIdentifier) + " connected!"); } else if (status == NetConnectionStatus.Disconnected) { Console.WriteLine(NetUtility.ToHexString(msg.SenderConnection.RemoteUniqueIdentifier) + " disconnected!"); } break; case NetIncomingMessageType.Data: try { var data = msg.Data; var message = SerializeTools.Deserialize <GameMessage>(data); Console.ForegroundColor = ConsoleColor.DarkMagenta; Console.WriteLine($"Receive Message From {NetUtility.ToHexString(message.ClientId)}::MsgCode:{(Int32)message.MsgCode},Content:{message.Content}"); Console.ResetColor(); OnGameMessage?.Invoke(message); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex); Console.ResetColor(); } break; } } p.Recycle(msg); }
protected void callGameMessage(string Message) { OnGameMessage?.Invoke(this, new GenericEventArgs { Message = Message }); }