Add @ijwu's changes + add /proc/meminfo trick for linux
This commit is contained in:
parent
68437f0a22
commit
e6ec63a90e
2 changed files with 39 additions and 5 deletions
|
|
@ -27,7 +27,8 @@ using System.Runtime.InteropServices;
|
|||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using TShockAPI.Extensions;
|
||||
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace TShockAPI
|
||||
{
|
||||
|
|
@ -176,7 +177,38 @@ namespace TShockAPI
|
|||
}
|
||||
return plugins;
|
||||
}
|
||||
|
||||
public long GetFreeSystemRam(bool mono)
|
||||
{
|
||||
if (mono)
|
||||
{
|
||||
//Temporary in case mono won't work
|
||||
if (File.Exists("/proc/meminfo"))
|
||||
{
|
||||
var l = File.ReadAllLines("/proc/meminfo");
|
||||
foreach (string s in l)
|
||||
{
|
||||
if (s.StartsWith("MemFree:"))
|
||||
{
|
||||
var m = Regex.Match(s, "MemFree:(\\s*)(\\d*) kB");
|
||||
if (m.Success)
|
||||
{
|
||||
long val;
|
||||
if (long.TryParse(m.Groups[2].Value, out val))
|
||||
{
|
||||
return val / 1024;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var pc = new PerformanceCounter("Memory", "Available MBytes");
|
||||
return pc.RawValue;
|
||||
}
|
||||
}
|
||||
public long GetTotalSystemRam(bool isMono)
|
||||
{
|
||||
if (totalMem != 0)
|
||||
|
|
@ -267,4 +299,4 @@ namespace TShockAPI
|
|||
/// </summary>
|
||||
public bool mono;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -329,10 +329,12 @@ namespace TShockAPI
|
|||
|
||||
Log.ConsoleInfo("TShock {0} ({1}) now running.", Version, VersionCodename);
|
||||
|
||||
if (StatTracker.GetTotalSystemRam(ServerApi.RunningMono) < 2)
|
||||
var systemRam = StatTracker.GetFreeSystemRam(ServerApi.RunningMono);
|
||||
if (systemRam > -1 && systemRam < 2048)
|
||||
{
|
||||
Log.ConsoleInfo("This machine has less than 2 gigabytes of RAM installed. Be advised that it might not be enough to run TShock.");
|
||||
Log.ConsoleError("This machine has less than 2 gigabytes of RAM free. Be advised that it might not be enough to run TShock.");
|
||||
}
|
||||
|
||||
ServerApi.Hooks.GamePostInitialize.Register(this, OnPostInit);
|
||||
ServerApi.Hooks.GameUpdate.Register(this, OnUpdate);
|
||||
ServerApi.Hooks.GameHardmodeTileUpdate.Register(this, OnHardUpdate);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue