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 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,36 +75,48 @@ 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{
|
||||||
Method method = response.getClass().getDeclaredMethod("exec",
|
Method method = response.getClass().getDeclaredMethod("exec",
|
||||||
|
|
Loading…
Add table
Reference in a new issue