implement stop method to stop the running socket server
This commit is contained in:
parent
f735a7d6bf
commit
d8e5948fa2
1 changed files with 23 additions and 10 deletions
|
@ -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",
|
||||
|
|
Loading…
Add table
Reference in a new issue