/// <summary> /// Initializes a new instance of the <see cref="ServerCleaner"/> class. /// </summary> /// <param name="server">The <see cref="Server"/> instance.</param> /// <exception cref="ArgumentNullException"><paramref name="server"/> is null.</exception> public ServerCleaner(Server server) { if (server == null) throw new ArgumentNullException("server"); _server = server; }
/// <summary> /// Initializes a new instance of the <see cref="ServerPacketHandler"/> class. /// </summary> /// <param name="server">The server.</param> /// <exception cref="ArgumentNullException"><paramref name="server" /> is <c>null</c>.</exception> public ServerPacketHandler(Server server) { if (server == null) throw new ArgumentNullException("server"); _server = server; _sayHandler = new SayHandler(server); }
/// <summary> /// Checks the server's settings for being valid. /// </summary> /// <returns>The list of descriptions on potentially invalid settings. Will be empty if no settings appeared to be invalid.</returns> /// <exception cref="ArgumentNullException"><paramref name="server"/> is null.</exception> public List<string> Check(Server server) { if (log.IsInfoEnabled) log.Info("Checking the server settings."); var errs = new List<string>(); CheckServerSettings(server, errs); return errs; }
/// <summary> /// Initializes a new instance of the <see cref="ServerSockets"/> class. /// </summary> /// <param name="server">The <see cref="Server"/> instance.</param> public ServerSockets(Server server) : base(CommonConfig.NetworkAppIdentifier, CommonConfig.ServerPort) { _packetHandler = new ServerPacketHandler(server); // When debugging, use the StatMessageProcessorManager instead (same thing as the other, but provides network statistics) #if DEBUG var m = new StatMessageProcessorManager(_packetHandler, EnumHelper<ClientPacketID>.BitsRequired); m.Stats.EnableFileOutput(ContentPaths.Build.Root.Join("netstats_in" + EngineSettings.DataFileSuffix)); _messageProcessorManager = m; #else _messageProcessorManager = new MessageProcessorManager(_packetHandler, EnumHelper<ClientPacketID>.BitsRequired); #endif }
void CheckLegalMapPos(List<string> errs, Server server, string settingName, MapID mapID, Vector2 pos) { var map = server.World.GetMap(mapID); if (map == null) { Add(errs, "`{0}` is invalid: map `{1}` does not exist", settingName, mapID); return; } if (pos.X < 0 || pos.Y < 0 || pos.X > map.Width || pos.Y > map.Height) { Add(errs, "`{0}` is invalid: position `{1}` is outside of the bounds of map `{2}` (size: {3})", settingName, pos, map, map.Size); return; } }
/// <summary> /// Checks the <see cref="ServerSettings"/>. /// </summary> /// <param name="server">The <see cref="Server"/>.</param> /// <param name="errs">The list for holding errors.</param> void CheckServerSettings(Server server, List<string> errs) { const int secs = 1000; const int mins = secs * 60; const int hours = mins * 60; const int days = hours * 24; var ss = ServerSettings.Default; /* Range checks */ CheckValueGreaterThan(errs, ss.CharacterJumpVelocity, "ServerSettings.CharacterJumpVelocity", -10); CheckValueLessThan(errs, ss.CharacterJumpVelocity, "ServerSettings.CharacterJumpVelocity", float.Epsilon); CheckValueGreaterThan(errs, ss.DefaultMapItemLife, "ServerSettings.DefaultMapItemLife", 1 * secs); CheckValueLessThan(errs, ss.DefaultMapItemLife, "ServerSettings.DefaultMapItemLife", 1 * days); CheckValueGreaterThan(errs, ss.MaxConnections, "ServerSettings.MaxConnections", -1); CheckValueLessThan(errs, ss.MaxConnections, "ServerSettings.MaxConnections", 60000); CheckValueGreaterThan(errs, ss.MaxRecentlyCreatedAccounts, "ServerSettings.MaxRecentlyCreatedAccounts", 0); CheckValueLessThan(errs, ss.MaxRecentlyCreatedAccounts, "ServerSettings.MaxRecentlyCreatedAccounts", 20); CheckValueGreaterThan(errs, ss.RespawnablesUpdateRate, "ServerSettings.MaxRecentlyCreatedAccounts", 100); CheckValueLessThan(errs, ss.RespawnablesUpdateRate, "ServerSettings.RespawnablesUpdateRate", mins * 10); CheckValueGreaterThan(errs, ss.RoutineServerSaveRate, "ServerSettings.RoutineServerSaveRate", mins * 1); CheckValueLessThan(errs, ss.RoutineServerSaveRate, "ServerSettings.RoutineServerSaveRate", days * 2); CheckValueGreaterThan(errs, ss.ServerUpdateRate, "ServerSettings.ServerUpdateRate", 0); CheckValueLessThan(errs, ss.ServerUpdateRate, "ServerSettings.ServerUpdateRate", 500); CheckValueGreaterThan(errs, ss.SyncExtraUserInformationRate, "ServerSettings.SyncExtraUserInformationRate", 10); CheckValueLessThan(errs, ss.SyncExtraUserInformationRate, "ServerSettings.SyncExtraUserInformationRate", secs * 5); /* Map checks */ CheckLegalMapPos(errs, server, "ServerSettings.InvalidPersistentNPCLoadMap", ss.InvalidPersistentNPCLoadMap, ss.InvalidPersistentNPCLoadPosition); CheckLegalMapPos(errs, server, "ServerSettings.InvalidUserLoadMap", ss.InvalidUserLoadMap, ss.InvalidUserLoadPosition); }