Beispiel #1
0
 /// <summary>
 /// Sends a packet to the server.
 /// </summary>
 /// <param name='p'>
 /// The packet to send.
 /// </param>
 /// <exception cref='ArgumentException'>
 /// Is thrown when the packet passed in cannot be written to a client.
 /// </exception>
 public void SendPacket(Packet p)
 {
     if (!p.CanWrite)
     {
         throw new ArgumentException("Packet (ID: " + p.PacketID + ") cannot be written!");
     }
     try
     {
         Write(p.PacketID);
         p.Write(this);
     }
     catch (Exception e)
     {
         Logger.Log(Logger.Level.Error, "Failed to send packet to " + IP + ":");
         Logger.Log(Logger.Level.Error, e.ToString());
         try
         {
             PacketDisconnect d = new PacketDisconnect();
             d.Reason = "Internal server error!";
             Write(d.PacketID);
             d.Write(this);
         }
         catch (Exception)
         {
         }
         Close();
     }
 }
Beispiel #2
0
 public bool RecvPacket(Packet p)
 {
     try
     {
         if (p is PacketAuthRequest)
         {
             return(RecvPacket(p as PacketAuthRequest));
         }
         else if (p is PacketPlayerJoin)
         {
             return(RecvPacket(p as PacketPlayerJoin));
         }
         else if (p is PacketPlayerLeave)
         {
             return(RecvPacket(p as PacketPlayerLeave));
         }
         else if (p is PacketLogMessage)
         {
             return(RecvPacket(p as PacketLogMessage));
         }
         else if (p is PacketStatusPing)
         {
             return(RecvPacket(p as PacketStatusPing));
         }
         else if (p is PacketDisconnect)
         {
             return(RecvPacket(p as PacketDisconnect));
         }
         else
         {
             Disconnect("Packet not implemented yet!");
             return(false);
         }
     }
     catch (Exception e)
     {
         if (Identity == null)
         {
             Logger.Log(Logger.Level.Error, "Failed to receive packet from " + IP + ":");
         }
         else
         {
             Logger.Log(Logger.Level.Error, "Failed to receive packet from " + Identity.ServerName + ":");
         }
         Logger.Log(Logger.Level.Error, e.ToString());
         try
         {
             PacketDisconnect d = new PacketDisconnect();
             d.Reason = "Internal server error!";
             Write(d.PacketID);
             d.Write(this);
         }
         catch (Exception)
         {
         }
         Close();
         return(false);
     }
 }
Beispiel #3
0
 public bool RecvPacket(PacketDisconnect p)
 {
     Close();
     if (Identity == null)
     {
         Logger.Log(Logger.Level.Info, IP + " has disconnected: " + p.Reason);
     }
     else
     {
         Logger.Log(Logger.Level.Info, Identity.ServerName + " has disconnected: " + p.Reason);
     }
     return(false);
 }
Beispiel #4
0
        /// <summary>
        /// Disconnect this server.
        /// </summary>
        /// <param name='reason'>
        /// The reason to provide the server with.
        /// </param>
        public void Disconnect(String reason)
        {
            if (Identity == null)
            {
                Logger.Log(Logger.Level.Info, IP + " has been disconnected: " + reason);
            }
            else
            {
                Logger.Log(Logger.Level.Info, Identity.ServerName + " has been disconnected: " + reason);
            }
            PacketDisconnect p = new PacketDisconnect();

            p.Reason = reason;
            SendPacket(p);
            Close();
        }