mirror of
https://github.com/DreamExposure/DisCal-Discord-Bot.git
synced 2026-02-11 22:18:27 -06:00
Server/Client communication is working!! DisCal v3 hype!!
This commit is contained in:
@@ -40,7 +40,8 @@ public class DisCalClient {
|
||||
dispatcher.registerListener(new ReadyEventListener());
|
||||
|
||||
//Register discal events
|
||||
EventManager.get().registerEventListener(new CrossTalkEventListener());
|
||||
EventManager.get().init();
|
||||
EventManager.get().getEventBus().register(new CrossTalkEventListener());
|
||||
|
||||
//Login
|
||||
client.login();
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.dreamexposure.discal.client.listeners.discal;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import org.dreamexposure.discal.client.DisCalClient;
|
||||
import org.dreamexposure.discal.client.message.MessageManager;
|
||||
import org.dreamexposure.discal.core.database.DatabaseManager;
|
||||
@@ -10,7 +11,6 @@ import org.dreamexposure.discal.core.object.GuildSettings;
|
||||
import org.dreamexposure.discal.core.object.web.WebGuild;
|
||||
import org.dreamexposure.discal.core.utils.GuildUtils;
|
||||
import org.dreamexposure.discal.core.utils.PermissionChecker;
|
||||
import org.dreamexposure.novautils.event.EventListener;
|
||||
import org.dreamexposure.novautils.events.network.crosstalk.CrossTalkReceiveEvent;
|
||||
import org.dreamexposure.novautils.network.crosstalk.ClientSocketHandler;
|
||||
import org.json.JSONArray;
|
||||
@@ -29,8 +29,8 @@ import java.util.List;
|
||||
* Contact: nova@dreamexposure.org
|
||||
*/
|
||||
@SuppressWarnings({"ConstantConditions", "IfCanBeSwitch"})
|
||||
public class CrossTalkEventListener implements EventListener {
|
||||
@SuppressWarnings("unused")
|
||||
public class CrossTalkEventListener {
|
||||
@Subscribe
|
||||
public void handle(CrossTalkReceiveEvent event) {
|
||||
IGuild g = null;
|
||||
//Check if this even applies to us!
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package org.dreamexposure.discal.client.service;
|
||||
|
||||
import org.dreamexposure.discal.client.DisCalClient;
|
||||
import org.dreamexposure.discal.core.logger.Logger;
|
||||
import org.dreamexposure.discal.core.object.BotSettings;
|
||||
import org.dreamexposure.novautils.network.crosstalk.ClientSocketHandler;
|
||||
import org.joda.time.Interval;
|
||||
import org.joda.time.Period;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.lang.management.ManagementFactory;
|
||||
@@ -28,10 +31,12 @@ public class KeepAliveHandler {
|
||||
data.put("Reason", "Keep-Alive");
|
||||
data.put("Server-Count", DisCalClient.getClient().getGuilds().size());
|
||||
data.put("Mem-Used", usedMemory());
|
||||
data.put("Uptime", getUptime());
|
||||
data.put("Uptime", humanReadableUptime());
|
||||
//TODO: Add announcement count!!!
|
||||
|
||||
ClientSocketHandler.sendToServer(Integer.valueOf(BotSettings.SHARD_INDEX.get()), data);
|
||||
|
||||
Logger.getLogger().debug("Sent keep alive to server.");
|
||||
}
|
||||
}, seconds * 1000, seconds * 1000);
|
||||
}
|
||||
@@ -39,11 +44,15 @@ public class KeepAliveHandler {
|
||||
private static double usedMemory() {
|
||||
long totalMemory = Runtime.getRuntime().totalMemory();
|
||||
long freeMemory = Runtime.getRuntime().freeMemory();
|
||||
return (double) (totalMemory - freeMemory) / (double) (1024 * 1024);
|
||||
double a = (totalMemory - freeMemory) / (double) (1024 * 1024);
|
||||
return (double) Math.round(a * 100) / 100;
|
||||
}
|
||||
|
||||
private static long getUptime() {
|
||||
private static String humanReadableUptime() {
|
||||
RuntimeMXBean mxBean = ManagementFactory.getRuntimeMXBean();
|
||||
return mxBean.getUptime();
|
||||
Interval interval = new Interval(mxBean.getStartTime(), System.currentTimeMillis());
|
||||
Period period = interval.toPeriod();
|
||||
|
||||
return String.format("%d year(s), %d month(s), %d day(s), %d hour(s), %d minute(s), %d second(s)%n", period.getYears(), period.getMonths(), period.getDays(), period.getHours(), period.getMinutes(), period.getSeconds());
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ public class ConnectedClient {
|
||||
|
||||
private int connectedServers;
|
||||
private long lastKeepAlive;
|
||||
private long uptime;
|
||||
private String uptime;
|
||||
private double memUsed;
|
||||
|
||||
public ConnectedClient(int _clientIndex, String _clientHostname, int _clientPort) {
|
||||
@@ -26,7 +26,7 @@ public class ConnectedClient {
|
||||
connectedServers = 0;
|
||||
lastKeepAlive = System.currentTimeMillis();
|
||||
|
||||
uptime = 0;
|
||||
uptime = "ERROR";
|
||||
memUsed = 0;
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ public class ConnectedClient {
|
||||
return lastKeepAlive;
|
||||
}
|
||||
|
||||
public long getUptime() {
|
||||
public String getUptime() {
|
||||
return uptime;
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ public class ConnectedClient {
|
||||
lastKeepAlive = _lastKeepAlive;
|
||||
}
|
||||
|
||||
public void setUptime(long _uptime) {
|
||||
public void setUptime(String _uptime) {
|
||||
uptime = _uptime;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,5 +44,9 @@ public class NetworkInfo {
|
||||
return count;
|
||||
}
|
||||
|
||||
public int getClientCount() {
|
||||
return clients.size();
|
||||
}
|
||||
|
||||
//Setters
|
||||
}
|
||||
@@ -33,8 +33,9 @@ public class DisCalServer {
|
||||
//Init logger
|
||||
Logger.getLogger().init();
|
||||
|
||||
//Register DisCal events and listeners
|
||||
EventManager.get().registerEventListener(new CrossTalkListener());
|
||||
//Register DisCal events
|
||||
EventManager.get().init();
|
||||
EventManager.get().getEventBus().register(new CrossTalkListener());
|
||||
|
||||
//Connect to MySQL
|
||||
DatabaseManager.getManager().connectToMySQL();
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package org.dreamexposure.discal.server.listeners;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import org.dreamexposure.discal.core.logger.Logger;
|
||||
import org.dreamexposure.discal.core.object.network.discal.ConnectedClient;
|
||||
import org.dreamexposure.discal.server.DisCalServer;
|
||||
import org.dreamexposure.novautils.event.EventListener;
|
||||
import org.dreamexposure.novautils.events.network.crosstalk.CrossTalkReceiveEvent;
|
||||
|
||||
/**
|
||||
@@ -13,26 +14,29 @@ import org.dreamexposure.novautils.events.network.crosstalk.CrossTalkReceiveEven
|
||||
* Company Website: https://www.dreamexposure.org
|
||||
* Contact: nova@dreamexposure.org
|
||||
*/
|
||||
@SuppressWarnings("Duplicates")
|
||||
public class CrossTalkListener implements EventListener {
|
||||
public void handle(CrossTalkReceiveEvent event) {
|
||||
@SuppressWarnings({"Duplicates", "UnstableApiUsage"})
|
||||
public class CrossTalkListener {
|
||||
@Subscribe
|
||||
public static void handle(CrossTalkReceiveEvent event) {
|
||||
//Handle keep alive...
|
||||
if (event.getData().has("Reason") && event.getData().getString("Reason").equalsIgnoreCase("Keep-Alive")) {
|
||||
Logger.getLogger().debug("Received Keep Alive for Client: " + event.getClientIndex());
|
||||
if (DisCalServer.getNetworkInfo().clientExists(event.getClientIndex())) {
|
||||
//In network, update info...
|
||||
ConnectedClient cc = DisCalServer.getNetworkInfo().getClient(event.getClientIndex());
|
||||
|
||||
cc.setLastKeepAlive(System.currentTimeMillis());
|
||||
cc.setConnectedServers(event.getData().getInt("Server-Count"));
|
||||
cc.setUptime(event.getData().getLong("Uptime"));
|
||||
cc.setUptime(event.getData().getString("Uptime"));
|
||||
cc.setMemUsed(event.getData().getDouble("Mem-Used"));
|
||||
|
||||
} else {
|
||||
//Not in network, add info...
|
||||
ConnectedClient cc = new ConnectedClient(event.getClientIndex(), event.getClientIp(), event.getClientPort());
|
||||
|
||||
cc.setLastKeepAlive(System.currentTimeMillis());
|
||||
cc.setConnectedServers(event.getData().getInt("Server-Count"));
|
||||
cc.setUptime(event.getData().getLong("Uptime"));
|
||||
cc.setUptime(event.getData().getString("Uptime"));
|
||||
cc.setMemUsed(event.getData().getDouble("Mem-Used"));
|
||||
|
||||
DisCalServer.getNetworkInfo().getClients().add(cc);
|
||||
|
||||
@@ -10,9 +10,10 @@ import org.dreamexposure.discal.core.enums.network.CrossTalkReason;
|
||||
import org.dreamexposure.discal.core.enums.network.DisCalRealm;
|
||||
import org.dreamexposure.discal.core.logger.Logger;
|
||||
import org.dreamexposure.discal.core.object.BotSettings;
|
||||
import org.dreamexposure.discal.core.object.network.discal.ConnectedClient;
|
||||
import org.dreamexposure.discal.core.object.web.WebGuild;
|
||||
import org.dreamexposure.discal.server.DisCalServer;
|
||||
import org.dreamexposure.discal.server.handler.DiscordAccountHandler;
|
||||
import org.dreamexposure.novautils.network.crosstalk.ClientSocketData;
|
||||
import org.dreamexposure.novautils.network.crosstalk.ServerSocketHandler;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
@@ -86,14 +87,14 @@ public class DiscordLoginHandler {
|
||||
|
||||
//Get guilds...
|
||||
List<WebGuild> guilds = new ArrayList<>();
|
||||
for (ClientSocketData csd : ServerSocketHandler.getClients()) {
|
||||
for (ConnectedClient csd : DisCalServer.getNetworkInfo().getClients()) {
|
||||
JSONObject requestData = new JSONObject();
|
||||
|
||||
requestData.put("Reason", CrossTalkReason.GET.name());
|
||||
requestData.put("Realm", DisCalRealm.WEBSITE_DASHBOARD_DEFAULTS);
|
||||
requestData.put("Member-Id", m.get("id") + "");
|
||||
|
||||
JSONObject responseData = ServerSocketHandler.sendAndReceive(requestData, csd.getIp(), csd.getPort());
|
||||
JSONObject responseData = ServerSocketHandler.sendAndReceive(requestData, csd.getClientHostname(), csd.getClientPort());
|
||||
|
||||
JSONArray guildsData = responseData.getJSONArray("Guilds");
|
||||
for (int i = 0; i < responseData.getInt("Guild-Count"); i++) {
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
<h1>DisCal Network and Services Status</h1>
|
||||
|
||||
<h2>Server</h2>
|
||||
<p th:text="'Connected Clients: ' + ${status.clients.size}"></p>
|
||||
<p th:text="'Connected Clients: ' + ${status.clientCount}"></p>
|
||||
<p>Uptime: Not yet tracked</p>
|
||||
<p>Total Guilds: not yet tracked</p>
|
||||
<p>Total Calendars: not yet tracked</p>
|
||||
@@ -84,10 +84,10 @@
|
||||
<th:block th:each="client : ${status.clients}">
|
||||
<div th:id="'client-' + ${client.clientIndex}">
|
||||
<h3 th:text="'Client Index: ' + ${client.clientIndex}"></h3>
|
||||
<p th:text="'Guilds:' + ${client.connectedServers}"></p>
|
||||
<p th:text="'Guilds: ' + ${client.connectedServers}"></p>
|
||||
<p th:text="'RAM Used: ' + ${client.memUsed} + 'MB'"></p>
|
||||
<p>Announcements: Not Yet Tracked</p>
|
||||
<p>Uptime: To be Displayed</p>
|
||||
<p th:text="'Uptime: ' + ${client.uptime}"></p>
|
||||
<p>Announcement Service: Not yet tracked</p>
|
||||
<p>Creator Cleaner Service: Not yet tracked</p>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user