implement stop method to stop the running socket server

This commit is contained in:
jeffcheasey88 2023-08-31 20:33:13 +02:00
parent f735a7d6bf
commit d8e5948fa2

View file

@ -39,6 +39,7 @@ public class Router<U extends User>{
private Consumer<JwtClaims> claims; private Consumer<JwtClaims> claims;
private Function<JwtClaims, U> userCreator; private Function<JwtClaims, U> userCreator;
private String[][] headers; private String[][] headers;
private ServerSocket serverSocket;
public Router() throws Exception{ public Router() throws Exception{
int types = RequestType.values().length; int types = RequestType.values().length;
@ -74,35 +75,47 @@ public class Router<U extends User>{
public void listen(int port, boolean ssl) throws Exception{ public void listen(int port, boolean ssl) throws Exception{
if (ssl) { // Not needed with the use of a proxy if (ssl) { // Not needed with the use of a proxy
SSLServerSocket server = null;
try { try {
SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
server = (SSLServerSocket) ssf.createServerSocket(port); serverSocket = (SSLServerSocket) ssf.createServerSocket(port);
while (!server.isClosed()) { while (!serverSocket.isClosed()) {
Socket socket = server.accept(); Socket socket = serverSocket.accept();
Client<U> client = new Client<>(socket, this); Client<U> client = new Client<>(socket, this);
client.start(); client.start();
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
if (server != null) { stop();
server.close();
}
} }
} else { } else {
try (ServerSocket server = new ServerSocket(port)) { try{
while (!server.isClosed()) { serverSocket = new ServerSocket(port);
Socket socket = server.accept(); while (!serverSocket.isClosed()) {
Socket socket = serverSocket.accept();
Client<U> client = new Client<>(socket, this); Client<U> client = new Client<>(socket, this);
client.start(); client.start();
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} finally {
stop();
} }
} }
} }
public void stop(){
if(serverSocket == null) return;
try {
serverSocket.close();
serverSocket = null;
}catch(Exception e){
e.printStackTrace();
}
}
public Router<U> register(Response response){ public Router<U> register(Response response){
try{ try{