private void SendUpdate(object info) { Thread.Sleep(1000*60*15); var data = new JsonData { port = Terraria.Netplay.serverPort, currentPlayers = TShock.Utils.ActivePlayers(), maxPlayers = TShock.Config.MaxSlots, systemRam = 0, systemCPUClock = 0, version = TShock.VersionNum.ToString(), terrariaVersion = Terraria.Main.versionNumber2, mono = Terraria.Main.runningMono }; var serialized = Newtonsoft.Json.JsonConvert.SerializeObject(data); var encoded = HttpUtility.UrlEncode(serialized); var uri = String.Format("http://96.47.231.227:8000?data={0}", encoded); var client = (HttpWebRequest)WebRequest.Create(uri); client.Timeout = 5000; try { using (var resp = GetResponseNoException(client)) { if (resp.StatusCode != HttpStatusCode.OK) { throw new IOException("Server did not respond with an OK."); } failed = false; } } catch (Exception e) { if (!failed) { Log.ConsoleError("StatTracker Exception: {0}", e); failed = true; } } ThreadPool.QueueUserWorkItem(SendUpdate); }
private void SendUpdate(object info) { JsonData data; if(ServerApi.RunningMono) { var pc = new PerformanceCounter("Mono Memory", "Total Physical Memory"); totalMem = (pc.RawValue / 1024 / 1024 / 1024); data = new JsonData { port = Terraria.Netplay.ListenPort, currentPlayers = TShock.Utils.ActivePlayers(), maxPlayers = TShock.Config.MaxSlots, systemRam = totalMem, version = TShock.VersionNum.ToString(), terrariaVersion = Terraria.Main.versionNumber2, providerId = ProviderToken, serverId = serverId, mono = true }; } else { GetPhysicallyInstalledSystemMemory(out totalMem); totalMem = (totalMem / 1024 / 1024); // Super hardcore maths to convert to Gb from Kb data = new JsonData { port = Terraria.Netplay.ListenPort, currentPlayers = TShock.Utils.ActivePlayers(), maxPlayers = TShock.Config.MaxSlots, systemRam = totalMem, version = TShock.VersionNum.ToString(), terrariaVersion = Terraria.Main.versionNumber2, providerId = ProviderToken, serverId = serverId, mono = false }; } var serialized = Newtonsoft.Json.JsonConvert.SerializeObject(data); var encoded = HttpUtility.UrlEncode(serialized); var uri = String.Format("http://stats.tshock.co/submit/{0}", encoded); var client = (HttpWebRequest)WebRequest.Create(uri); client.Timeout = 5000; try { using (var resp = TShock.Utils.GetResponseNoException(client)) { if (resp.StatusCode != HttpStatusCode.OK) { throw new IOException("Server did not respond with an OK."); } failed = false; } } catch (Exception e) { if (!failed) { TShock.Log.ConsoleError("StatTracker Exception: {0}", e); failed = true; } } }