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 Function<JwtClaims, U> userCreator;
private String[][] headers;
private ServerSocket serverSocket;
public Router() throws Exception{
int types = RequestType.values().length;
@ -74,36 +75,48 @@ public class Router<U extends User>{
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<U> 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<U> 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<U> register(Response response){
try{
Method method = response.getClass().getDeclaredMethod("exec",