예제 #1
0
        /// <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();
        }
예제 #2
0
        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;
        }
예제 #3
0
        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);
        }
예제 #4
0
 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);
     }
 }
예제 #5
0
파일: BuildInfo.cs 프로젝트: Reve/everadix
 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;
     }
 }
예제 #6
0
파일: BuildInfo.cs 프로젝트: Reve/everadix
 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;
 }