using System; namespace SharedLibraryCore.RCon { public static class StaticHelpers { /// <summary> /// defines the type of RCon query sent to a server /// </summary> public enum QueryType { /// <summary> /// retrieve the status of a server /// does not require RCon password /// </summary> GET_STATUS, /// <summary> /// retrieve the information of a server /// server responds with key/value pairs /// RCon password is required /// </summary> GET_INFO, /// <summary> /// retrieve the value of a DVAR /// RCon password is required /// </summary> GET_DVAR, /// <summary> /// set the value of a DVAR /// RCon password is required /// </summary> SET_DVAR, /// <summary> /// execute a command /// RCon password is required /// </summary> COMMAND, /// <summary> /// get the full server command information /// RCon password is required /// </summary> COMMAND_STATUS } /// <summary> /// line seperator char included in response from the server /// </summary> public static char SeperatorChar = (char)int.Parse("0a", System.Globalization.NumberStyles.AllowHexSpecifier); /// <summary> /// timeout in seconds to wait for a socket send or receive before giving up /// </summary> public static TimeSpan SocketTimeout(int retryAttempt) { return retryAttempt switch { 1 => TimeSpan.FromMilliseconds(550), 2 => TimeSpan.FromMilliseconds(1000), 3 => TimeSpan.FromMilliseconds(2000), 4 => TimeSpan.FromMilliseconds(5000), _ => TimeSpan.FromMilliseconds(10000), }; } /// <summary> /// interval in milliseconds to wait before sending the next RCon request /// </summary> public static readonly int FloodProtectionInterval = 750; } }