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