/// <summary> /// Everytime the API timer is clicked, we fire this to check whether we need to update the queries. /// </summary> internal static void UpdateOnOneSecondTick() { if (!s_running) { return; } // Updates EVE server status EVEServer.UpdateOnOneSecondTick(); // Updates the accounts foreach (var account in Accounts) { account.UpdateOnOneSecondTick(); } // Updates the characters foreach (var character in Characters) { var ccpCharacter = character as CCPCharacter; if (ccpCharacter != null) { ccpCharacter.UpdateOnOneSecondTick(); } } // Fires the event for subscribers if (TimerTick != null) { TimerTick(null, EventArgs.Empty); } // Check for settings save Settings.UpdateOnOneSecondTick(); }
public static void Update(EVEServer server) { int serverBuild, clientBuild; string codePackageURL; UpdateInternal(server, out serverBuild, out clientBuild, out codePackageURL); ServerBuild = serverBuild; ClientBuild = clientBuild; CodePackageURL = codePackageURL; }
public static EVEServer SelectByHighestBuild(bool verbose = false) { EVEServer highestServer = EVEServer.Tranquility; int highestBuild = 0; foreach (var server in Enum.GetValues(typeof(EVEServer))) { int serverBuild, clientBuild; string codePackageURL; if (verbose) { Console.Write("[+] polling " + server + ".. "); } if (!UpdateInternal((EVEServer)server, out serverBuild, out clientBuild, out codePackageURL)) { if (verbose) { Console.WriteLine("not reachable"); } } else { if (verbose) { Console.WriteLine(clientBuild.ToString()); } if (clientBuild > highestBuild) { highestServer = (EVEServer)server; highestBuild = clientBuild; } } } if (verbose) { Console.WriteLine("[+] " + highestServer + " has highest build (" + highestBuild + ")"); } return(highestServer); }
private static bool UpdateInternal(EVEServer server, out int serverBuild, out int clientBuild, out string codePackageURL) { try { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) { NoDelay = true }; socket.Connect(ServerHosts[server], 26000); var reader = new BinaryReader(new NetworkStream(socket)); var len = reader.ReadInt32(); var data = reader.ReadBytes(len); var hello = Unmarshal.Process <eveMarshal.PyTuple>(data); serverBuild = (int)hello[4].IntValue; if (hello[6] is PyNone) { // no client patch available clientBuild = serverBuild; codePackageURL = null; } else { var updateInfo = (hello[6] as PyObjectData).Arguments as eveMarshal.PyDict; clientBuild = (int)updateInfo.Get("build").IntValue; codePackageURL = updateInfo.Get("fileurl").StringValue; } socket.Close(); return(true); } catch (Exception e) { serverBuild = clientBuild = 0; codePackageURL = null; return(false); } }
private static bool UpdateInternal(EVEServer server, out int serverBuild, out int clientBuild, out string codePackageURL) { try { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) {NoDelay = true}; socket.Connect(ServerHosts[server], 26000); var reader = new BinaryReader(new NetworkStream(socket)); var len = reader.ReadInt32(); var data = reader.ReadBytes(len); var hello = Unmarshal.Process<eveMarshal.PyTuple>(data); serverBuild = (int) hello[4].IntValue; if (hello[6] is PyNone) { // no client patch available clientBuild = serverBuild; codePackageURL = null; } else { var updateInfo = (hello[6] as PyObjectData).Arguments as eveMarshal.PyDict; clientBuild = (int)updateInfo.Get("build").IntValue; codePackageURL = updateInfo.Get("fileurl").StringValue; } socket.Close(); return true; } catch (Exception e) { serverBuild = clientBuild = 0; codePackageURL = null; return false; } }