diff --git a/src/main/java/net/pixtaded/crab/server/ServerThread.java b/src/main/java/net/pixtaded/crab/server/ServerThread.java index 3db59bf..ef0927c 100644 --- a/src/main/java/net/pixtaded/crab/server/ServerThread.java +++ b/src/main/java/net/pixtaded/crab/server/ServerThread.java @@ -32,7 +32,7 @@ public class ServerThread implements Runnable { @Override public void run() { try { - byte[] PID = input.readNBytes(1); + byte[] PID = readPID(); if (PID.length == 0) { socket.close(); return; @@ -40,20 +40,18 @@ public class ServerThread implements Runnable { switch (PID[0]) { case COMMUNICATION -> { String msg = new String(input.readNBytes(4096), StandardCharsets.UTF_8).trim(); - if (!msg.isEmpty()) { - Date date = new Date(); - String address = socket.getInetAddress().getHostAddress(); + Date date = new Date(); + String address = socket.getInetAddress().getHostAddress(); - String s = Sanitizer.sanitizeString(msg, true); - String newContent = server.cache.content() + Sanitizer.formatMessage(date.getTime(), address, s); - server.cache = new Logs(newContent.getBytes().length, newContent); + String s = Sanitizer.sanitizeString(msg, true); + String newContent = server.cache.content() + Sanitizer.formatMessage(date.getTime(), address, s); + server.cache = new Logs(newContent.getBytes().length, newContent); - new Thread(new LogDBThread(date, address, msg)).start(); - } - } /* case LOGS -> { - respond(server.cache.content()); - } */ case LOGS_SIZE -> { + new Thread(new LogDBThread(date, address, msg)).start(); + } case LOGS_SIZE -> { respond(String.valueOf(server.cache.sizeInBytes())); + readPID(); + sendLogs(); } default -> { System.out.println("PID not implemented: " + PID[0]); } @@ -64,6 +62,14 @@ public class ServerThread implements Runnable { } } + private byte[] readPID() throws IOException { + return input.readNBytes(1); + } + + private void sendLogs() throws IOException { + respond(server.cache.content()); + } + private void respond(byte[] data) throws IOException { socket.getOutputStream().write(data); socket.getOutputStream().flush();