Server/Server/src/main/java/uulm/teamname/marvelous/server/lobby/pipelining/RequestGameStateSegment.java

38 lines
1.4 KiB
Java

package uulm.teamname.marvelous.server.lobby.pipelining;
import org.tinylog.Logger;
import uulm.teamname.marvelous.gamelibrary.events.Event;
import uulm.teamname.marvelous.gamelibrary.gamelogic.GameInstance;
import uulm.teamname.marvelous.gamelibrary.messages.server.EventMessage;
import uulm.teamname.marvelous.gamelibrary.requests.RequestType;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* The {@link RequestGameStateSegment} handles requests of {@link RequestType} Req. Therefore it sends the active
* gamestate and clears the {@link Packet} afterwards.
*/
public class RequestGameStateSegment implements Segment {
private final GameInstance game;
public RequestGameStateSegment(GameInstance game) {
this.game = game;
}
@Override
public void processRequests(Packet packet, List<Event> carrier, AtomicBoolean abort) {
Logger.trace("RequestGameStateSegment received {} requests", packet.size());
if (packet.containsRequestOfType(RequestType.Req)) {
Logger.trace("Req event found. Returning Gamestate, and clearing entire RequestList");
var gamestateEventMessage = new EventMessage();
gamestateEventMessage.messages = new Event[] {game.getGameStateEvent()};
packet.getOrigin().sendMessage(gamestateEventMessage);
carrier.clear();
packet.clear();
}
}
}