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];
}