Fix: useless interface removed

This commit is contained in:
2026-06-10 16:53:47 +02:00
parent 507e4923d0
commit 14a8e07b91
4 changed files with 9 additions and 51 deletions
@@ -3,7 +3,7 @@ package it.polimi.ingsw.gc14;
import it.polimi.ingsw.gc14.Controller.GameController;
import it.polimi.ingsw.gc14.Model.Game;
import it.polimi.ingsw.gc14.Model.GamePackage.GameStages;
import it.polimi.ingsw.gc14.Network.ClientBroadcaster;
import it.polimi.ingsw.gc14.Network.CompositeClientBroadcaster;
import it.polimi.ingsw.gc14.Network.EventType;
import it.polimi.ingsw.gc14.Network.NetworkEvent;
import it.polimi.ingsw.gc14.Network.NetworkEvents.*;
@@ -37,7 +37,7 @@ public class GameEventProcessor {
private final BlockingQueue<NetworkEvent> actionQueue;
private final GameController gameController;
private final LimitedMap<String, Boolean> playerList;
private final ClientBroadcaster broadcaster;
private final CompositeClientBroadcaster broadcaster;
private final SaveManager saveManager;
/** Single-thread executor used exclusively for the forfeit timer. */
@@ -63,7 +63,7 @@ public class GameEventProcessor {
BlockingQueue<NetworkEvent> actionQueue,
GameController gameController,
LimitedMap<String, Boolean> playerList,
ClientBroadcaster broadcaster,
CompositeClientBroadcaster broadcaster,
SaveManager saveManager) {
this.actionQueue = actionQueue;
this.gameController = gameController;
@@ -1,34 +0,0 @@
package it.polimi.ingsw.gc14.Network;
import it.polimi.ingsw.gc14.Model.MiniModel;
/**
* Abstraction over the set of connected clients.
*
* <p>Implementations are expected to forward events and model snapshots
* to every transport layer (TCP, RMI, ...) in use, hiding the details
* of each protocol from the caller.
*
* <p>Error events (where {@link NetworkEvent#getIsError()} is {@code true})
* must be delivered only to the requesting player; non-error events must
* be delivered to every connected client. Implementations are responsible
* for enforcing this rule.
*/
public interface ClientBroadcaster {
/**
* Sends a network event to the appropriate connected clients.
*
* @param event the event to deliver; if it represents an error it is
* sent only to the player identified by
* {@link NetworkEvent#getUsername()}.
*/
void notifyAll(NetworkEvent event);
/**
* Sends an updated game snapshot to every connected client.
*
* @param model the mini-model to deliver.
*/
void notifyAll(MiniModel model);
}
@@ -5,13 +5,12 @@ import it.polimi.ingsw.gc14.Network.RMI.Server.RMIServer;
import it.polimi.ingsw.gc14.Network.TCP.Server.TCPServer;
/**
* {@link ClientBroadcaster} implementation that forwards every notification
* to both the RMI and the TCP transport layers.
* Forwards every notification to both the RMI and the TCP transport layers.
*
* <p>This follows the Composite pattern: the caller interacts with a single
* broadcaster without knowing which protocols are active underneath.
*/
public class CompositeClientBroadcaster implements ClientBroadcaster {
public class CompositeClientBroadcaster {
private final RMIServer rmiServer;
private final TCPServer tcpServer;
@@ -28,24 +27,18 @@ public class CompositeClientBroadcaster implements ClientBroadcaster {
}
/**
* {@inheritDoc}
*
* <p>Forwards the event to both the RMI and the TCP server.
* Forwards the event to both the RMI and the TCP server.
* Each server is responsible for filtering error events to the
* requesting player only.
*/
@Override
public void notifyAll(NetworkEvent event) {
rmiServer.notifyAll(event);
tcpServer.notifyAll(event);
}
/**
* {@inheritDoc}
*
* <p>Forwards the model snapshot to every client on both transports.
* Forwards the model snapshot to every client on both transports.
*/
@Override
public void notifyAll(MiniModel model) {
rmiServer.notifyAll(model);
tcpServer.notifyAll(model);
@@ -4,7 +4,6 @@ import it.polimi.ingsw.gc14.Controller.GameController;
import it.polimi.ingsw.gc14.Model.Game;
import it.polimi.ingsw.gc14.Model.MiniModel;
import it.polimi.ingsw.gc14.Model.Player;
import it.polimi.ingsw.gc14.Network.ClientBroadcaster;
import it.polimi.ingsw.gc14.Network.CompositeClientBroadcaster;
import it.polimi.ingsw.gc14.Network.NetworkEvent;
import it.polimi.ingsw.gc14.Network.RMI.Server.RMIServer;
@@ -49,7 +48,7 @@ public class ServerLauncher {
BlockingQueue<NetworkEvent> actionQueue,
GameController gameController,
LimitedMap<String, Boolean> playerList,
ClientBroadcaster broadcaster,
CompositeClientBroadcaster broadcaster,
SaveManager saveManager) {
this.eventProcessor = new GameEventProcessor(
actionQueue, gameController, playerList, broadcaster, saveManager);
@@ -81,7 +80,7 @@ public class ServerLauncher {
RMIServer rmiServer = new RMIServer(gameController, NetworkConfig.RMI_PORT, actionQueue, playerList, ip);
TCPServer tcpServer = new TCPServer(gameController, NetworkConfig.TCP_PORT, NetworkConfig.HEARTBEAT_PORT, actionQueue, playerList);
ClientBroadcaster broadcaster = new CompositeClientBroadcaster(rmiServer, tcpServer);
CompositeClientBroadcaster broadcaster = new CompositeClientBroadcaster(rmiServer, tcpServer);
SaveManager saveManager = new SaveManager(ServerLauncher.class);
restoreGameIfSaved(gameController, playerList, saveManager);