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
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 protected void callGameMessage(string Message)
 {
     OnGameMessage?.Invoke(this, new GenericEventArgs {
         Message = Message
     });
 }