From e61f98608c3cfaf027766fabe127580d26a66261 Mon Sep 17 00:00:00 2001
From: Elrabu <busch.elias@web.de>
Date: Thu, 30 Nov 2023 16:34:18 +0100
Subject: [PATCH] Update: Added Getter/Setter to the ConnectionHandler class
 and added a stop method for the Thread in the server class.

---
 .../Multiplayer/{TestServer => }/Client.java  |  5 +-
 .../Model/Multiplayer/ConnectionHandler.java  | 57 +++++++++++++++++++
 .../Multiplayer/{TestServer => }/Server.java  | 38 +++++++++----
 .../TestServer/ConnectionHandling.java        | 30 ----------
 4 files changed, 86 insertions(+), 44 deletions(-)
 rename src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/{TestServer => }/Client.java (81%)
 create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/ConnectionHandler.java
 rename src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/{TestServer => }/Server.java (67%)
 delete mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/ConnectionHandling.java

diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Client.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/Client.java
similarity index 81%
rename from src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Client.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/Client.java
index d85b3389..25772788 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Client.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/Client.java
@@ -1,6 +1,5 @@
-package de.hdm_stuttgart.battlearena.Model.Multiplayer.TestServer;
+package de.hdm_stuttgart.battlearena.Model.Multiplayer;
 
-import de.hdm_stuttgart.battlearena.Model.Multiplayer.ConnectionHandler;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -13,7 +12,7 @@ public class Client {
     private PrintWriter out;
     private BufferedReader in;
 
-    private static final Logger log = LogManager.getLogger(ConnectionHandler.class);
+    private static final Logger log = LogManager.getLogger(Client.class);
 
     public void startConnection(String ip, int port) throws IOException {
         clientSocket = new Socket(ip, port);
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/ConnectionHandler.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/ConnectionHandler.java
new file mode 100644
index 00000000..4bffdb53
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/ConnectionHandler.java
@@ -0,0 +1,57 @@
+package de.hdm_stuttgart.battlearena.Model.Multiplayer;
+
+import java.io.IOException;
+
+public class ConnectionHandler {
+
+    private int pX;
+    private int pY;
+    private int enemyX;
+    private int enemyY;
+
+    private static int[] coordinates = {5,10};
+
+    public static void main(String[] args) throws IOException, InterruptedException {
+
+        Client client = new Client();
+        client.startConnection("localhost", 4444);
+        int[] cords = client.sendcords(coordinates);
+        System.out.println(cords);
+
+        //stop the connection:
+        client.stopConnection();
+    }
+
+    public int getpX() {
+        return pX;
+    }
+
+    public void setpX(int pX) {
+        this.pX = pX;
+    }
+
+    public int getpY() {
+        return pY;
+    }
+
+    public void setpY(int pY) {
+        this.pY = pY;
+    }
+
+    public int getEnemyX() {
+        return enemyX;
+    }
+
+    public void setEnemyX(int enemyX) {
+        this.enemyX = enemyX;
+    }
+
+    public int getEnemyY() {
+        return enemyY;
+    }
+
+    public void setEnemyY(int enemyY) {
+        this.enemyY = enemyY;
+    }
+}
+
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Server.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/Server.java
similarity index 67%
rename from src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Server.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/Server.java
index 378a1f00..70956866 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Server.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/Server.java
@@ -1,12 +1,10 @@
-package de.hdm_stuttgart.battlearena.Model.Multiplayer.TestServer;
+package de.hdm_stuttgart.battlearena.Model.Multiplayer;
 
-import de.hdm_stuttgart.battlearena.Model.Multiplayer.GameServer;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
 import java.net.*;
 import java.io.*;
-import java.util.Arrays;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
@@ -15,9 +13,13 @@ public class Server {
 
     private static final Logger log = LogManager.getLogger(Server.class);
     private ServerSocket serverSocket;
+    private static boolean isServerRunning = true;
     private static int px;
     private static int py;
 
+    private static int enemyx;
+    private static int enemyy;
+
     private static int[] cords;
 
     public static void main(String[] args) throws IOException {
@@ -29,16 +31,9 @@ public class Server {
     public void start(String lolcalhost, int port) throws IOException {
         serverSocket = new ServerSocket(port);
         log.info("server started!");
-        while (true)
-            new ServerHandler(serverSocket.accept()).start();
-    }
-
-    public void stop() throws IOException {
-        serverSocket.close();
+        new ServerHandler(serverSocket.accept()).start();
     }
 
-    // EchoClientHandler class in the Server
-
     private static class ServerHandler extends Thread {
         private Socket clientSocket;
         private PrintWriter out;
@@ -71,6 +66,18 @@ public class Server {
 
                     log.info(cords);
 
+                    //check if server was shut down:
+                    if (!isServerRunning) {
+                        executorService.shutdown();
+                        try {
+                            if (!executorService.awaitTermination(5, TimeUnit.SECONDS)) {
+                                executorService.shutdownNow();
+                            }
+                        } catch (InterruptedException e) {
+                            log.error("Error waiting for executor service termination: " + e.getMessage());
+                        }
+                    }
+
                 } catch (IOException e) {
                     throw new RuntimeException(e);
                 }
@@ -78,4 +85,13 @@ public class Server {
         }
     }
 
+    public void stopServer() {
+        isServerRunning = false;
+        try {
+            serverSocket.close(); // Close the server socket to break out of accept() in the main thread
+        } catch (IOException e) {
+            log.error("Error closing server socket: " + e.getMessage());
+        }
+    }
+
 }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/ConnectionHandling.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/ConnectionHandling.java
deleted file mode 100644
index e11381ac..00000000
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/ConnectionHandling.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package de.hdm_stuttgart.battlearena.Model.Multiplayer.TestServer;
-
-import java.io.IOException;
-import java.lang.reflect.Array;
-import java.util.concurrent.TimeUnit;
-
-public class ConnectionHandling {
-
-    private int px;
-
-    private int py;
-
-    private static int[] coordinates = {5,10};
-
-    public static void main(String[] args) throws IOException, InterruptedException {
-        Client client = new Client();
-        client.startConnection("localhost", 4444);
-        int[] cords = client.sendcords(coordinates);
-        System.out.println(cords);
-    }
-
-    public int getPx() {
-        return px;
-    }
-
-    public int getPy() {
-        return py;
-    }
-}
-
-- 
GitLab