public Game getGame(final ID playerID, final ID gameID) { P player = loadPlayer(playerID); IMPL game = loadGame(gameID); validatePlayerForGame(game, player); return gameMasker.maskGameForPlayer(game, player); } }
public M handleAction(final ID playerID, final ID gameID, final PARAMTYPE param) { P player = loadPlayer(playerID); IMPL game = loadGame(gameID); validatePlayerForGame(game, player); IMPL updatedGame = updateGameWithEligibilityWrapper(player, game, param); updatedGame = gamePublisher.publish(updatedGame, player); return gameMasker.maskGameForPlayer(updatedGame, player); }
private boolean publishGameToPlayer(final P player, final IMPL game) { logger.trace("Publishing game update on game " + game.getId() + " to player " + player.getId()); final boolean[] status = new boolean[]{false}; try { Broadcaster broadcaster = broadcasterFactory.getBroadcasterFactory() .lookup(LiveFeedService.PATH_ROOT + player.getIdAsString()); if (broadcaster != null) { WebSocketMessage message = new WebSocketMessage(); message.setMessageType(MessageType.Game); message.setGame(gameMasker.maskGameForPlayer(game, player)); broadcaster.broadcast(message); status[0] = true; } else { logger.trace( "Player {} is not connected to this server for {}.", player.getIdAsString(), game.getIdAsString()); } } catch (Exception e) { logger.error("Error publishing game " + game.getId() + " to player " + player.getId(), e); } publicationListeners.forEach(listener -> { try { listener.publishedGameUpdateToPlayer(player, game, status[0]); } catch (Exception e) { logger.error("Error publishing to publication listener", e); } }); return status[0]; }