示例#1
0
 void StartDaemon(Carbonate.Server.Server server)
 {
     while (Connected)
     {
         Thread.Sleep(1);
         if (DateTime.Now > keepalive)
         {
             server.Disconnect(Username);
             Disconnect();
             ScreenIO.Info($"User \"{Username}\" was kicked from the server due to keep-alive.");
             break;
         }
         try {
             lock (stream)
             {
                 if (!stream.DataAvailable)
                 {
                     continue;
                 }
                 Packet packet = Packet.ReceivePacket(stream, receiveBuffer);
                 server.ProcessUserPacket(this, packet);
             }
         }
         catch (Exception ex)
         {
             ScreenIO.Error($"Error occured in user daemon thread of \"{Username}\": {ex.Message}");
         }
     }
 }
示例#2
0
 /// <summary>
 /// Begin daemon thread.
 /// </summary>
 /// <param name="server">Server object</param>
 public void BeginDaemon(Carbonate.Server.Server server)
 {
     daemonThread = new Thread(() => { StartDaemon(server); });
     daemonThread.IsBackground = true;
     daemonThread.Start();
 }