From d8e5948fa272a35db207b0226ab3872760416a18 Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Thu, 31 Aug 2023 20:33:13 +0200 Subject: [PATCH] implement stop method to stop the running socket server --- src/dev/peerat/framework/Router.java | 33 +++++++++++++++++++--------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/dev/peerat/framework/Router.java b/src/dev/peerat/framework/Router.java index d37edc6..b300b63 100644 --- a/src/dev/peerat/framework/Router.java +++ b/src/dev/peerat/framework/Router.java @@ -39,6 +39,7 @@ public class Router{ private Consumer claims; private Function userCreator; private String[][] headers; + private ServerSocket serverSocket; public Router() throws Exception{ int types = RequestType.values().length; @@ -74,35 +75,47 @@ public class Router{ public void listen(int port, boolean ssl) throws Exception{ if (ssl) { // Not needed with the use of a proxy - SSLServerSocket server = null; try { SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); - server = (SSLServerSocket) ssf.createServerSocket(port); + serverSocket = (SSLServerSocket) ssf.createServerSocket(port); - while (!server.isClosed()) { - Socket socket = server.accept(); + while (!serverSocket.isClosed()) { + Socket socket = serverSocket.accept(); Client client = new Client<>(socket, this); client.start(); } } catch (Exception e) { e.printStackTrace(); } finally { - if (server != null) { - server.close(); - } + stop(); } } else { - try (ServerSocket server = new ServerSocket(port)) { - while (!server.isClosed()) { - Socket socket = server.accept(); + try{ + serverSocket = new ServerSocket(port); + while (!serverSocket.isClosed()) { + Socket socket = serverSocket.accept(); Client client = new Client<>(socket, this); client.start(); } } catch (Exception e) { e.printStackTrace(); + } finally { + stop(); } } } + + + + public void stop(){ + if(serverSocket == null) return; + try { + serverSocket.close(); + serverSocket = null; + }catch(Exception e){ + e.printStackTrace(); + } + } public Router register(Response response){ try{