Fixed Shutdown to truely shut down the sessionController actions and closes the thread.
Added testcode to RestartSessionControllerTest to test for no errors.
This commit is contained in:
@@ -19,6 +19,7 @@ import java.util.Set;
|
||||
* The sessionController manages any connections from new clients and assigns individual threads to said clients.
|
||||
*/
|
||||
public class SessionController extends Controller {
|
||||
private ServerSocket serverSocket;
|
||||
private final DataParser parser;
|
||||
private final ArrayList<ServerClient> clients = new ArrayList<>();
|
||||
private final HashMap<String, Thread> clientThreads = new HashMap<>();
|
||||
@@ -34,6 +35,7 @@ public class SessionController extends Controller {
|
||||
*/
|
||||
@Override
|
||||
public void run() {
|
||||
this.listening = true;
|
||||
while (listening) {
|
||||
listen();
|
||||
}
|
||||
@@ -44,10 +46,10 @@ public class SessionController extends Controller {
|
||||
*/
|
||||
public void listen() {
|
||||
try {
|
||||
ServerSocket serverSocket = new ServerSocket(ServerData.port());
|
||||
this.serverSocket = new ServerSocket(ServerData.port());
|
||||
System.out.println("[SERVER] listening on port " + ServerData.port());
|
||||
registerClient(serverSocket.accept());
|
||||
serverSocket.close();
|
||||
this.serverSocket.close();
|
||||
} catch (IOException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
@@ -140,5 +142,11 @@ public class SessionController extends Controller {
|
||||
*/
|
||||
public void shutdown() {
|
||||
this.listening = false;
|
||||
try {
|
||||
serverSocket.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
System.out.println("[SERVER] networking shutdown ");
|
||||
}
|
||||
}
|
||||
|
||||
30
core/src/test/java/RestartSessionControllerTest.java
Normal file
30
core/src/test/java/RestartSessionControllerTest.java
Normal file
@@ -0,0 +1,30 @@
|
||||
import netwerkprog.game.server.controllers.SessionController;
|
||||
import org.junit.Test;
|
||||
|
||||
public class RestartSessionControllerTest {
|
||||
|
||||
@Test
|
||||
public void restartSessionController() {
|
||||
SessionController sessionController;
|
||||
Thread sessionThread;
|
||||
|
||||
sessionController = new SessionController();
|
||||
sessionThread = new Thread(sessionController);
|
||||
|
||||
sessionThread.start();
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
sessionController.shutdown();
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
System.out.println(sessionThread.getState());
|
||||
sessionThread = new Thread(sessionController);
|
||||
sessionThread.start();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user