68 lines
2.2 KiB
Java
68 lines
2.2 KiB
Java
package commands;
|
|
|
|
import core.Command;
|
|
import core.LocStrings;
|
|
import core.CommandManager.ThreadData;
|
|
import dataStructures.KittyChannel;
|
|
import dataStructures.KittyGuild;
|
|
import dataStructures.KittyRating;
|
|
import dataStructures.KittyRole;
|
|
import dataStructures.KittyUser;
|
|
import dataStructures.Response;
|
|
import dataStructures.UserInput;
|
|
import core.Stats;
|
|
|
|
public class CommandStats extends Command
|
|
{
|
|
public CommandStats(KittyRole level, KittyRating rating) { super(level, rating); }
|
|
|
|
@Override
|
|
public String HelpText() { return LocStrings.Stub("StatsInfo"); }
|
|
|
|
// Called when the command is run!
|
|
@Override
|
|
public void OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
|
|
{
|
|
String out = "```\n";
|
|
Stats stats = Stats.instance;
|
|
|
|
out += "----- [General] -----\n";
|
|
out += " Messages observed: " + stats.GetMessagesSeen() + "\n";
|
|
out += "Commands processed: " + stats.GetCommandsProcessed() + "\n";
|
|
out += " KittyBot uptime: " + stats.GetFormattedUptime() + "\n";
|
|
out += "\n";
|
|
out += "----- [Health] -----\n";
|
|
out += " SMT cores: " + stats.GetCPUAvailable() + "\n";
|
|
|
|
// If CPU load works on this OS, list it.
|
|
double CPULoad = stats.GetSystemCPULoad();
|
|
if(CPULoad > -0.9) // -1.0 is the error state
|
|
out += "System CPU Load: " + (CPULoad * 100) + "%\n";
|
|
|
|
ThreadData data = stats.GetThreadData();
|
|
Integer terminated = data.states.get(Thread.State.TERMINATED);
|
|
Integer runnable = data.states.get(Thread.State.RUNNABLE);
|
|
Integer blocked = data.states.get(Thread.State.BLOCKED);
|
|
Integer timed_waiting = data.states.get(Thread.State.TIMED_WAITING);
|
|
Integer waiting = data.states.get(Thread.State.WAITING);
|
|
|
|
out += " Child threads:"
|
|
+ " run: " + (runnable == null ? 0 : runnable)
|
|
+ " block: " + (blocked == null ? 0 : blocked)
|
|
+ " sleep: " + (timed_waiting == null ? 0 : timed_waiting)
|
|
+ " wait: " + (waiting == null ? 0 : waiting)
|
|
+ " term: " + (terminated == null ? 0 : terminated)
|
|
+ "\n";
|
|
|
|
Integer guildCount = stats.GetGuildCount();
|
|
Integer userCount = stats.GetUserCount();
|
|
|
|
out += "\n----- [Counts] -----\n"
|
|
+ "Guilds: " + guildCount + "\n"
|
|
+ " Users: " + userCount;
|
|
out += "\n```";
|
|
|
|
res.Call(out);
|
|
}
|
|
}
|