Server/Client communication is working!! DisCal v3 hype!!

This commit is contained in:
NovaFox161
2018-09-12 23:00:00 -05:00
parent feb9c3f5f3
commit e0ef521824
9 changed files with 46 additions and 26 deletions

View File

@@ -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();

View File

@@ -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!

View File

@@ -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());
}
}

View File

@@ -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;
}

View File

@@ -44,5 +44,9 @@ public class NetworkInfo {
return count;
}
public int getClientCount() {
return clients.size();
}
//Setters
}

View File

@@ -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();

View File

@@ -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);

View File

@@ -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++) {

View File

@@ -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>