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.
|
* The sessionController manages any connections from new clients and assigns individual threads to said clients.
|
||||||
*/
|
*/
|
||||||
public class SessionController extends Controller {
|
public class SessionController extends Controller {
|
||||||
|
private ServerSocket serverSocket;
|
||||||
private final DataParser parser;
|
private final DataParser parser;
|
||||||
private final ArrayList<ServerClient> clients = new ArrayList<>();
|
private final ArrayList<ServerClient> clients = new ArrayList<>();
|
||||||
private final HashMap<String, Thread> clientThreads = new HashMap<>();
|
private final HashMap<String, Thread> clientThreads = new HashMap<>();
|
||||||
@@ -34,6 +35,7 @@ public class SessionController extends Controller {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
this.listening = true;
|
||||||
while (listening) {
|
while (listening) {
|
||||||
listen();
|
listen();
|
||||||
}
|
}
|
||||||
@@ -44,10 +46,10 @@ public class SessionController extends Controller {
|
|||||||
*/
|
*/
|
||||||
public void listen() {
|
public void listen() {
|
||||||
try {
|
try {
|
||||||
ServerSocket serverSocket = new ServerSocket(ServerData.port());
|
this.serverSocket = new ServerSocket(ServerData.port());
|
||||||
System.out.println("[SERVER] listening on port " + ServerData.port());
|
System.out.println("[SERVER] listening on port " + ServerData.port());
|
||||||
registerClient(serverSocket.accept());
|
registerClient(serverSocket.accept());
|
||||||
serverSocket.close();
|
this.serverSocket.close();
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
@@ -140,5 +142,11 @@ public class SessionController extends Controller {
|
|||||||
*/
|
*/
|
||||||
public void shutdown() {
|
public void shutdown() {
|
||||||
this.listening = false;
|
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