use of lavalink.client.io.RemoteStats in project FredBoat by Frederikam.
the class NodeAdminCommand method list.
private void list(@Nonnull CommandContext context) {
Lavalink lavalink = Launcher.getBotController().getAudioConnectionFacade().getLavalink();
boolean showHosts = false;
if (context.hasArguments() && context.rawArgs.contains("host")) {
if (PermsUtil.checkPermsWithFeedback(PermissionLevel.BOT_ADMIN, context)) {
showHosts = true;
} else {
return;
}
}
List<LavalinkSocket> nodes = lavalink.getNodes();
if (nodes.isEmpty()) {
context.replyWithName("There are no remote lavalink nodes registered.");
return;
}
List<String> messages = new ArrayList<>();
for (LavalinkSocket socket : nodes) {
RemoteStats stats = socket.getStats();
String str = "Name: " + socket.getName() + "\n";
if (showHosts) {
str += "Host: " + socket.getRemoteUri() + "\n";
}
if (stats == null) {
str += "No stats have been received from this node! Is the node down?";
str += "\n\n";
messages.add(str);
continue;
}
str += "Playing players: " + stats.getPlayingPlayers() + "\n";
str += "Lavalink load: " + TextUtils.formatPercent(stats.getLavalinkLoad()) + "\n";
str += "System load: " + TextUtils.formatPercent(stats.getSystemLoad()) + " \n";
str += "Memory: " + stats.getMemUsed() / 1000000 + "MB/" + stats.getMemReservable() / 1000000 + "MB\n";
str += "---------------\n";
str += "Average frames sent: " + stats.getAvgFramesSentPerMinute() + "\n";
str += "Average frames nulled: " + stats.getAvgFramesNulledPerMinute() + "\n";
str += "Average frames deficit: " + stats.getAvgFramesDeficitPerMinute() + "\n";
str += "---------------\n";
LavalinkLoadBalancer.Penalties penalties = LavalinkLoadBalancer.getPenalties(socket);
str += "Penalties Total: " + penalties.getTotal() + "\n";
str += "Player Penalty: " + penalties.getPlayerPenalty() + "\n";
str += "CPU Penalty: " + penalties.getCpuPenalty() + "\n";
str += "Deficit Frame Penalty: " + penalties.getDeficitFramePenalty() + "\n";
str += "Null Frame Penalty: " + penalties.getNullFramePenalty() + "\n";
str += "Raw: " + penalties.toString() + "\n";
str += "---------------\n\n";
messages.add(str);
}
if (showHosts) {
for (String str : messages) {
context.replyPrivate(TextUtils.asCodeBlock(str), null, null);
}
context.replyWithName("Sent you a DM with the data. If you did not receive anything, adjust your privacy settings so I can DM you.");
} else {
for (String str : messages) {
context.reply(TextUtils.asCodeBlock(str));
}
}
}
use of lavalink.client.io.RemoteStats in project FredBoat by Frederikam.
the class NodeAdminCommand method show.
private void show(@Nonnull CommandContext context) {
String name = context.args[1];
List<LavalinkSocket> nodes = Launcher.getBotController().getAudioConnectionFacade().getLavalink().getNodes().stream().filter(ll -> ll.getName().equals(name)).collect(Collectors.toList());
if (nodes.isEmpty()) {
context.reply("No such node: " + name + ", showing a list of all nodes instead");
list(context);
return;
}
RemoteStats stats = nodes.get(0).getStats();
String out = "No stats have been received from this node! Is the node down?";
if (stats != null) {
out = TextUtils.asCodeBlock(stats.getAsJson().toString(4), "json");
}
context.reply(out);
}
Aggregations