Fix: ServerLauncher
This commit is contained in:
@@ -4,7 +4,7 @@ import java.util.ArrayList;
|
||||
|
||||
public class LimitedList<T> extends ArrayList<T> {
|
||||
private int limit;
|
||||
private final Runnable action;
|
||||
private Runnable action;
|
||||
|
||||
public LimitedList(int limit, Runnable action) {
|
||||
this.limit = limit;
|
||||
@@ -25,4 +25,8 @@ public class LimitedList<T> extends ArrayList<T> {
|
||||
}
|
||||
|
||||
public int getLimit(){return limit;}
|
||||
|
||||
public void setAction(Runnable action) {
|
||||
this.action=action;
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import java.util.concurrent.BlockingQueue;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
|
||||
public class ServerLauncher {
|
||||
|
||||
BlockingQueue<NetworkEvent> actionQueue;
|
||||
GameController gameController;
|
||||
RMIServer serverRMI;
|
||||
@@ -26,15 +27,6 @@ public class ServerLauncher {
|
||||
this.serverRMI = serverRMI;
|
||||
this.gameController = gameController;
|
||||
this.serverTCP = serverTCP;
|
||||
this.players = new LimitedList<>(5, ()->{
|
||||
try {
|
||||
run();
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (RemoteException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public boolean doFirstEven() throws InterruptedException, RemoteException {
|
||||
@@ -57,19 +49,31 @@ public class ServerLauncher {
|
||||
// Il server RMI e il server TCP quando ricevono un doEvent devono aggiungere l'evento alla coda condivisa
|
||||
// Questa classe esegue gli eventi nella coda e chiama il notify all e notify error sia RMI che TCP
|
||||
|
||||
players = new LimitedList<>(5, ()->{});
|
||||
BlockingQueue<NetworkEvent> actionQueue = new LinkedBlockingQueue<>();
|
||||
GameController gameController = new GameController();
|
||||
RMIServer serverRMI = new RMIServer(gameController, 1099, actionQueue, players);
|
||||
TCPServer serverTCP = new TCPServer(gameController, 8080, actionQueue, players);
|
||||
|
||||
ServerLauncher launcher = new ServerLauncher(actionQueue, gameController, serverRMI, serverTCP);
|
||||
|
||||
players.setAction(()->{
|
||||
try {
|
||||
launcher.run();
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (RemoteException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
|
||||
serverRMI.start();
|
||||
new Thread(()->{serverTCP.start();}).start();
|
||||
}
|
||||
|
||||
public void run() throws InterruptedException, RemoteException {
|
||||
|
||||
serverRMI.notifyAll(gameController.getModel());
|
||||
//serverTCP.broadcastUpdate(model);
|
||||
serverTCP.broadcastModel(gameController.getModel());
|
||||
|
||||
|
||||
while (true) {
|
||||
|
||||
Reference in New Issue
Block a user