diff --git a/src/main/java/org/toop/ConsoleGui.java b/src/main/java/org/toop/ConsoleGui.java index 8970c07..44be9ec 100644 --- a/src/main/java/org/toop/ConsoleGui.java +++ b/src/main/java/org/toop/ConsoleGui.java @@ -1,11 +1,20 @@ package org.toop; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.toop.eventbus.Events; +import org.toop.eventbus.GlobalEventBus; import org.toop.game.*; import org.toop.game.tictactoe.*; import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; public class ConsoleGui { + + private static final Logger logger = LogManager.getLogger(ConsoleGui.class); + private Scanner scanner; private TicTacToe game; @@ -14,7 +23,7 @@ public class ConsoleGui { String ai1 = null; String ai2 = null; - public ConsoleGui() { + public ConsoleGui() throws ExecutionException, InterruptedException { scanner = new Scanner(System.in); Random random = new Random(3453498); @@ -32,6 +41,7 @@ public class ConsoleGui { try { mode = Integer.parseInt(modeString); } catch (Exception e) { + logger.error(e.getMessage()); } String player1 = null; diff --git a/src/main/java/org/toop/Main.java b/src/main/java/org/toop/Main.java index 3d77ec3..16bea9a 100644 --- a/src/main/java/org/toop/Main.java +++ b/src/main/java/org/toop/Main.java @@ -19,24 +19,10 @@ import java.util.concurrent.ExecutionException; public class Main { private static final Logger logger = LogManager.getLogger(Main.class); - public static void main(String[] args) throws ExecutionException, InterruptedException, IOException { + public static void main(String[] args) throws ExecutionException, InterruptedException { initSystems(); - CompletableFuture serverIdFuture = new CompletableFuture<>(); - GlobalEventBus.post(new Events.ServerEvents.StartServerRequest("5001", "tictactoe", serverIdFuture)); - String serverId = serverIdFuture.get(); - - CompletableFuture connectionIdFuture = new CompletableFuture<>(); - GlobalEventBus.post(new Events.ServerEvents.StartConnectionRequest("127.0.0.1", "5001", connectionIdFuture)); - String connectionId = connectionIdFuture.get(); - - CompletableFuture ticTacToeGame = new CompletableFuture<>(); - GlobalEventBus.post(new Events.ServerEvents.CreateTicTacToeGameRequest(serverId, "John", "Pim", ticTacToeGame)); - String ticTacToeGameId = ticTacToeGame.get(); - - GlobalEventBus.post(new Events.ServerEvents.RunTicTacToeGame(serverId, ticTacToeGameId)); - ConsoleGui console = new ConsoleGui(); GameBase.State state = GameBase.State.INVALID; diff --git a/src/main/java/org/toop/eventbus/Events.java b/src/main/java/org/toop/eventbus/Events.java index 63b7528..f0f981b 100644 --- a/src/main/java/org/toop/eventbus/Events.java +++ b/src/main/java/org/toop/eventbus/Events.java @@ -139,7 +139,7 @@ public class Events implements IEvents { /** * Triggers when the server client receives a message. */ - public record ReceivedMessage(String message) {} + public record ReceivedMessage(String ConnectionUuid, String message) {} /** * Triggers on changing the server ip. diff --git a/src/main/java/org/toop/server/frontend/ConnectionManager.java b/src/main/java/org/toop/server/frontend/ConnectionManager.java index 3d19a9f..61ad9bc 100644 --- a/src/main/java/org/toop/server/frontend/ConnectionManager.java +++ b/src/main/java/org/toop/server/frontend/ConnectionManager.java @@ -36,7 +36,7 @@ public class ConnectionManager { private String startConnectionRequest(String ip, String port) { String connectionId = UUID.randomUUID().toString(); - ServerConnection connection = new ServerConnection(ip, port); + ServerConnection connection = new ServerConnection(connectionId, ip, port); this.serverConnections.put(connectionId, connection); new Thread(connection, "Connection-" + connectionId).start(); logger.info("Connected to server {} at {}:{}", connectionId, ip, port); diff --git a/src/main/java/org/toop/server/frontend/ServerConnection.java b/src/main/java/org/toop/server/frontend/ServerConnection.java index 865fd13..b9fdf29 100644 --- a/src/main/java/org/toop/server/frontend/ServerConnection.java +++ b/src/main/java/org/toop/server/frontend/ServerConnection.java @@ -18,12 +18,13 @@ public final class ServerConnection implements Runnable { private final BlockingQueue commandQueue = new LinkedBlockingQueue<>(); private final ExecutorService executor = Executors.newFixedThreadPool(2); + String uuid; String ip; String port; TcpClient tcpClient; volatile boolean running = false; - public ServerConnection(String ip, String port) { + public ServerConnection(String uuid, String ip, String port) { this.ip = ip; this.port = port; this.initEvents(); @@ -119,6 +120,7 @@ public final class ServerConnection implements Runnable { String received = tcpClient.readLine(); // blocks if (received != null) { logger.info("Received: '{}'", received); + GlobalEventBus.post(new Events.ServerEvents.ReceivedMessage(this.uuid, received)); } else { break; } @@ -205,8 +207,8 @@ public final class ServerConnection implements Runnable { * @param ip The address of the server to contact. * @param port The port of the server. */ - public static ServerConnection startNew(String ip, String port) { - ServerConnection serverConnection = new ServerConnection(ip, port); + public static ServerConnection startNew(String uuid, String ip, String port) { + ServerConnection serverConnection = new ServerConnection(uuid, ip, port); new Thread(serverConnection).start(); return serverConnection; }