From 26e3211247680483df99895daf623ab33d0e0529 Mon Sep 17 00:00:00 2001 From: Dries007 Date: Sun, 16 Jul 2017 18:33:22 +0200 Subject: [PATCH] Partial commit 2. Changes include: - Added keeping of the last 25 lines (or exception traces in the case of errors) of log, to make identifying issue easier. --- .../net/doubledoordev/backend/TestMain.java | 57 ++++++++++++++++--- .../doubledoordev/backend/server/Server.java | 4 ++ .../socket/ServerWebSocketApplication.java | 10 +--- .../ServerconsoleSocketApplication.java | 10 ++++ 4 files changed, 65 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/doubledoordev/backend/TestMain.java b/src/main/java/net/doubledoordev/backend/TestMain.java index 541876b..a6d93b5 100644 --- a/src/main/java/net/doubledoordev/backend/TestMain.java +++ b/src/main/java/net/doubledoordev/backend/TestMain.java @@ -19,23 +19,64 @@ package net.doubledoordev.backend; import net.doubledoordev.backend.server.query.MCQuery; -import net.doubledoordev.backend.server.query.QueryResponse; + +import java.io.IOException; +import java.time.Instant; +import java.util.Calendar; +import java.util.Date; +import java.util.Timer; +import java.util.TimerTask; public class TestMain { public static void main(String[] args) throws Exception { - MCQuery query = new MCQuery("vps2.dries007.net", 25569); - QueryResponse queryResponse; - while (true) +// testMCQuery(); + testTaskStuff(); + } + + private static void testTaskStuff() + { + Timer timer = new Timer(); + +// timer.schedule(); + +// Calendar now = Calendar.getInstance(); + Date now = Date.from(Instant.now()); +// Instant now = Instant.now(); + + + timer.scheduleAtFixedRate(new Task(), 0, 1000 * 10); // 10 sec + } + + private static class Task extends TimerTask + { + @Override + public void run() { - queryResponse = query.fullStat(); - if (queryResponse != null) System.out.println(queryResponse.toString()); - else System.out.println("null"); - synchronized (Thread.currentThread()) + System.out.println("Task run()"); + + Calendar now = Calendar.getInstance(); + } + } + + private static void testMCQuery() throws IOException + { + System.out.println(new MCQuery("vps2.dries007.net", 25501).fullStat()); + } + + private static void sleep1sec() + { + synchronized (Thread.currentThread()) + { + try { Thread.currentThread().wait(1000); } + catch (InterruptedException ignored) + { + + } } } } diff --git a/src/main/java/net/doubledoordev/backend/server/Server.java b/src/main/java/net/doubledoordev/backend/server/Server.java index ef75155..c9711b9 100644 --- a/src/main/java/net/doubledoordev/backend/server/Server.java +++ b/src/main/java/net/doubledoordev/backend/server/Server.java @@ -18,6 +18,7 @@ package net.doubledoordev.backend.server; +import com.google.common.collect.EvictingQueue; import com.google.gson.JsonObject; import com.google.gson.annotations.Expose; import net.doubledoordev.backend.Main; @@ -70,6 +71,7 @@ public class Server */ public int[] size = new int[3]; public QueryResponse cachedResponse; + public EvictingQueue lastConsoleLines = EvictingQueue.create(25); @Expose private String ID; @@ -1039,6 +1041,7 @@ public void printLine(String line) { line = Helper.stripColor(line); logger.info(line); + lastConsoleLines.add(line); ServerconsoleSocketApplication.sendLine(this, line); } @@ -1047,6 +1050,7 @@ public void error(Throwable e) logger.catching(e); StringWriter error = new StringWriter(); e.printStackTrace(new PrintWriter(error)); + lastConsoleLines.add(error.toString()); ServerconsoleSocketApplication.sendLine(this, error.toString()); } diff --git a/src/main/java/net/doubledoordev/backend/web/socket/ServerWebSocketApplication.java b/src/main/java/net/doubledoordev/backend/web/socket/ServerWebSocketApplication.java index 70a7775..2d2c57f 100644 --- a/src/main/java/net/doubledoordev/backend/web/socket/ServerWebSocketApplication.java +++ b/src/main/java/net/doubledoordev/backend/web/socket/ServerWebSocketApplication.java @@ -56,20 +56,14 @@ public void onConnect(WebSocket socket) } ((DefaultWebSocket) socket).getUpgradeRequest().setAttribute(USER, session.getAttribute(USER)); String[] serverName = ((DefaultWebSocket) socket).getUpgradeRequest().getPathInfo().substring(1).split("/"); - if (Strings.isNullOrEmpty(serverName[0]) || Strings.isNullOrEmpty(serverName[0])) - { - WebSocketHelper.sendError(socket, "No valid server."); - socket.close(); - return; - } Server server = Settings.getServerByName(serverName[0]); - if (server == null) + if (Strings.isNullOrEmpty(serverName[0]) || server == null) { WebSocketHelper.sendError(socket, "No valid server."); socket.close(); return; } - else if (!server.canUserControl((User) ((DefaultWebSocket) socket).getUpgradeRequest().getAttribute(USER))) + if (!server.canUserControl((User) ((DefaultWebSocket) socket).getUpgradeRequest().getAttribute(USER))) { WebSocketHelper.sendError(socket, "You have no rights to this server."); socket.close(); diff --git a/src/main/java/net/doubledoordev/backend/web/socket/ServerconsoleSocketApplication.java b/src/main/java/net/doubledoordev/backend/web/socket/ServerconsoleSocketApplication.java index ea23477..154638a 100644 --- a/src/main/java/net/doubledoordev/backend/web/socket/ServerconsoleSocketApplication.java +++ b/src/main/java/net/doubledoordev/backend/web/socket/ServerconsoleSocketApplication.java @@ -62,6 +62,16 @@ public static void sendLine(Server server, String line) } } + @Override + public void onConnect(WebSocket socket) + { + super.onConnect(socket); + for (String line : ((Server) ((DefaultWebSocket) socket).getUpgradeRequest().getAttribute(SERVER)).lastConsoleLines) + { + WebSocketHelper.sendData(socket, line); + } + } + @Override public void onMessage(WebSocket socket, String text) {