Skip to content

Commit 6cab231

Browse files
committed
feat(server): use more specific RescuableClientExceptions
1 parent c311939 commit 6cab231

File tree

7 files changed

+16
-14
lines changed

7 files changed

+16
-14
lines changed

sdk/src/framework/sc/shared/InvalidMoveException.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import kotlin.RuntimeException
99
* @param mistake ist die Art der Regelverletzung.
1010
* @param move ist der Zug, der den Fehler verursacht hat.
1111
*/
12-
class InvalidMoveException @JvmOverloads constructor(
13-
@JvmField val mistake: IMoveMistake,
14-
@JvmField val move: IMove? = null):
12+
data class InvalidMoveException @JvmOverloads constructor(
13+
val mistake: IMoveMistake,
14+
val move: IMove? = null):
1515
RuntimeException("${mistake.message}${move?.let { " bei Zug '$it'"}.orEmpty()}")

sdk/src/server-api/sc/networking/clients/XStreamClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public void run() {
8080
this.receiveThread.start();
8181
}
8282

83-
protected abstract void onObject(ProtocolMessage o) throws UnprocessedPacketException, InvalidGameStateException;
83+
protected abstract void onObject(ProtocolMessage o) throws UnprocessedPacketException;
8484

8585
/** Used by the receiving thread. All exceptions should be handled. */
8686
public void receiveThread() {

server/src/sc/server/Lobby.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ open class Lobby: GameRoomManager(), IClientListener, Closeable {
5555
val packet = callback.packet
5656
if (packet is ILobbyRequest) {
5757
when (packet) {
58-
is JoinPreparedRoomRequest -> ReservationManager.redeemReservationCode(source, packet.reservationCode)
58+
is JoinPreparedRoomRequest ->
59+
ReservationManager.redeemReservationCode(source, packet.reservationCode)
5960
is JoinRoomRequest -> {
6061
val gameRoomMessage = this.joinOrCreateGame(source, packet.gameType)
6162
// null is returned if join was unsuccessful

server/src/sc/server/gaming/GameRoom.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ public synchronized void onEvent(Client source, ProtocolMessage data) throws Gam
436436
final String error = String.format("Ungueltiger Zug von '%s'.\n%s", player.getDisplayName(), e);
437437
logger.error(error);
438438
player.setViolationReason(e.getMessage());
439-
ProtocolErrorMessage errorMessage = new ProtocolErrorMessage(e.move, error);
439+
ProtocolErrorMessage errorMessage = new ProtocolErrorMessage(e.getMove(), error);
440440
player.notifyListeners(errorMessage);
441441
observerBroadcast(new RoomPacket(id, errorMessage));
442442
game.onPlayerLeft(player, ScoreCause.RULE_VIOLATION);

server/src/sc/server/gaming/GameRoomManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
5+
import sc.api.plugins.exceptions.GameRoomException;
56
import sc.api.plugins.exceptions.RescuableClientException;
67
import sc.networking.InvalidScoreDefinitionException;
78
import sc.protocol.requests.PrepareGameRequest;
@@ -207,7 +208,7 @@ public synchronized GameRoom findRoom(String roomId) throws RescuableClientExcep
207208
GameRoom room = this.rooms.get(roomId);
208209

209210
if (room == null) {
210-
throw new RescuableClientException("Couldn't find a room with id " + roomId);
211+
throw new GameRoomException("Couldn't find a room with id " + roomId);
211212
}
212213

213214
return room;

server/src/sc/server/gaming/ReservationManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ private ReservationManager() {
2929
*
3030
* @throws RescuableClientException will be thrown if slot cannot be filled or reservation is unknown
3131
*/
32-
public static synchronized PlayerSlot redeemReservationCode(Client client,
33-
String reservation) throws RescuableClientException {
32+
public static synchronized PlayerSlot redeemReservationCode(Client client, String reservation)
33+
throws RescuableClientException {
3434
PlayerSlot result = reservations.remove(reservation);
3535

3636
if (result == null) {

server/src/sc/server/network/Client.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
5+
import sc.api.plugins.exceptions.GameLogicException;
6+
import sc.api.plugins.exceptions.NotYourTurnException;
57
import sc.api.plugins.exceptions.RescuableClientException;
68
import sc.networking.INetworkInterface;
79
import sc.networking.UnprocessedPacketException;
@@ -75,19 +77,17 @@ private void notifyOnPacket(Object packet) throws UnprocessedPacketException {
7577

7678
for (RescuableClientException error : errors) {
7779
logger.warn("An error occured: ", error);
78-
if (!error.getMessage().equals("It's not your turn yet.")) {
80+
if (error instanceof GameLogicException && !(error instanceof NotYourTurnException)) {
7981
logger.warn("Game closed because of GameLogicException: " + error.getMessage());
8082
}
8183
}
8284
if (!errors.isEmpty()) {
83-
logger.debug("Stopping client because of error. Thread: {}",
84-
Thread.currentThread().getName());
85+
logger.debug("Stopping {} because of error", this);
8586
stop();
8687
}
8788

8889
if (packet instanceof LeftGameEvent) {
89-
logger.debug("Stopping client because of LeftGameEvent received. Thread: {}",
90-
Thread.currentThread().getName());
90+
logger.debug("Stopping {} because of received LeftGameEvent", this);
9191
stop();
9292
}
9393
}

0 commit comments

Comments
 (0)