mirror of
https://github.com/correl/mage.git
synced 2024-11-25 03:00:11 +00:00
add some Java8 magic to the server
This commit is contained in:
parent
9bea7c7df2
commit
50f28a2bf7
7 changed files with 46 additions and 56 deletions
|
@ -56,9 +56,9 @@ public final class Main {
|
|||
private static final File extensionFolder = new File("extensions");
|
||||
|
||||
public static final PluginClassLoader classLoader = new PluginClassLoader();
|
||||
public static TransporterServer server;
|
||||
protected static boolean testMode;
|
||||
protected static boolean fastDbMode;
|
||||
private static TransporterServer server;
|
||||
private static boolean testMode;
|
||||
private static boolean fastDbMode;
|
||||
|
||||
/**
|
||||
* @param args the command line arguments
|
||||
|
@ -418,10 +418,12 @@ public final class Main {
|
|||
File[] files = directory.listFiles(
|
||||
(dir, name) -> name.endsWith(".game")
|
||||
);
|
||||
if(files != null) {
|
||||
for (File file : files) {
|
||||
file.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static MageVersion getVersion() {
|
||||
return version;
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
|
||||
package mage.server;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import javax.annotation.Nonnull;
|
||||
import mage.MageException;
|
||||
import mage.players.net.UserData;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.jboss.remoting.callback.InvokerCallbackHandler;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
|
@ -88,18 +89,15 @@ public enum SessionManager {
|
|||
}
|
||||
|
||||
public boolean setUserData(String userName, String sessionId, UserData userData, String clientVersion, String userIdStr) throws MageException {
|
||||
Session session = sessions.get(sessionId);
|
||||
if (session != null) {
|
||||
session.setUserData(userName, userData, clientVersion, userIdStr);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return getSession(sessionId)
|
||||
.map(session -> session.setUserData(userName,userData, clientVersion, userIdStr))
|
||||
.orElse(false);
|
||||
|
||||
}
|
||||
|
||||
public void disconnect(String sessionId, DisconnectReason reason) {
|
||||
Session session = sessions.get(sessionId);
|
||||
if (session != null) {
|
||||
if (!sessions.containsKey(sessionId)) {
|
||||
getSession(sessionId).ifPresent(session -> {
|
||||
if (!isValidSession(sessionId)) {
|
||||
// session was removed meanwhile by another thread so we can return
|
||||
return;
|
||||
}
|
||||
|
@ -122,10 +120,10 @@ public enum SessionManager {
|
|||
default:
|
||||
logger.trace("endSession: unexpected reason " + reason.toString() + " - sessionId: " + sessionId);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Admin requested the disconnect of a user
|
||||
|
@ -150,11 +148,9 @@ public enum SessionManager {
|
|||
}
|
||||
|
||||
private Optional<User> getUserFromSession(String sessionId) {
|
||||
Optional<Session> session = getSession(sessionId);
|
||||
if (!session.isPresent()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
return UserManager.instance.getUser(session.get().getUserId());
|
||||
return getSession(sessionId)
|
||||
.flatMap(s -> UserManager.instance.getUser(s.getUserId()));
|
||||
|
||||
}
|
||||
|
||||
public void endUserSession(String sessionId, String userSessionId) {
|
||||
|
@ -164,11 +160,8 @@ public enum SessionManager {
|
|||
}
|
||||
|
||||
public boolean isAdmin(String sessionId) {
|
||||
Session admin = sessions.get(sessionId);
|
||||
if (admin != null) {
|
||||
return admin.isAdmin();
|
||||
}
|
||||
return false;
|
||||
return getSession(sessionId).map(Session::isAdmin).orElse(false);
|
||||
|
||||
}
|
||||
|
||||
public boolean isValidSession(@Nonnull String sessionId) {
|
||||
|
@ -185,11 +178,9 @@ public enum SessionManager {
|
|||
}
|
||||
|
||||
public boolean extendUserSession(String sessionId, String pingInfo) {
|
||||
Session session = sessions.get(sessionId);
|
||||
if (session != null) {
|
||||
return UserManager.instance.extendUserSession(session.getUserId(), pingInfo);
|
||||
}
|
||||
return false;
|
||||
return getSession(sessionId)
|
||||
.map(session -> UserManager.instance.extendUserSession(session.getUserId(), pingInfo))
|
||||
.orElse(false);
|
||||
}
|
||||
|
||||
public void sendErrorMessageToClient(String sessionId, String message) {
|
||||
|
|
|
@ -927,12 +927,10 @@ public class TableController {
|
|||
public boolean isTournamentStillValid() {
|
||||
if (table.getTournament() != null) {
|
||||
if (table.getState() != TableState.WAITING && table.getState() != TableState.READY_TO_START && table.getState() != TableState.STARTING) {
|
||||
TournamentController tournamentController = TournamentManager.instance.getTournamentController(table.getTournament().getId());
|
||||
if (tournamentController != null) {
|
||||
return tournamentController.isTournamentStillValid(table.getState());
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return TournamentManager.instance.getTournamentController(table.getTournament().getId())
|
||||
.map(tc -> tc.isTournamentStillValid(table.getState()))
|
||||
.orElse(false);
|
||||
|
||||
} else {
|
||||
// check if table creator is still a valid user, if not removeUserFromAllTablesAndChat table
|
||||
return UserManager.instance.getUser(userId).isPresent();
|
||||
|
|
|
@ -334,10 +334,10 @@ public class User {
|
|||
}
|
||||
for (Iterator<Entry<UUID, UUID>> iterator = userTournaments.entrySet().iterator(); iterator.hasNext();) {
|
||||
Entry<UUID, UUID> next = iterator.next();
|
||||
TournamentController tournamentController = TournamentManager.instance.getTournamentController(next.getValue());
|
||||
if (tournamentController != null) {
|
||||
Optional<TournamentController> tournamentController = TournamentManager.instance.getTournamentController(next.getValue());
|
||||
if (tournamentController.isPresent()) {
|
||||
ccTournamentStarted(next.getValue(), next.getKey());
|
||||
tournamentController.rejoin(next.getKey());
|
||||
tournamentController.get().rejoin(next.getKey());
|
||||
} else {
|
||||
iterator.remove(); // tournament has ended meanwhile
|
||||
}
|
||||
|
|
|
@ -70,13 +70,8 @@ public enum UserManager {
|
|||
final Lock r = lock.readLock();
|
||||
r.lock();
|
||||
try {
|
||||
Optional<User> u = users.values().stream().filter(user -> user.getName().equals(userName))
|
||||
return users.values().stream().filter(user -> user.getName().equals(userName))
|
||||
.findFirst();
|
||||
if (u.isPresent()) {
|
||||
return u;
|
||||
} else {
|
||||
return Optional.empty();
|
||||
}
|
||||
} finally {
|
||||
r.unlock();
|
||||
}
|
||||
|
@ -84,7 +79,7 @@ public enum UserManager {
|
|||
}
|
||||
|
||||
public Collection<User> getUsers() {
|
||||
ArrayList<User> userList = new ArrayList<>();
|
||||
List<User> userList = new ArrayList<>();
|
||||
final Lock r = lock.readLock();
|
||||
r.lock();
|
||||
try {
|
||||
|
|
|
@ -16,8 +16,8 @@ public enum TournamentManager {
|
|||
instance;
|
||||
private final ConcurrentHashMap<UUID, TournamentController> controllers = new ConcurrentHashMap<>();
|
||||
|
||||
public TournamentController getTournamentController(UUID tournamentId) {
|
||||
return controllers.get(tournamentId);
|
||||
public Optional<TournamentController> getTournamentController(UUID tournamentId) {
|
||||
return Optional.ofNullable(controllers.get(tournamentId));
|
||||
}
|
||||
|
||||
public void createTournamentSession(Tournament tournament, ConcurrentHashMap<UUID, UUID> userPlayerMap, UUID tableId) {
|
||||
|
|
|
@ -54,13 +54,13 @@ public final class FleshAllergy extends CardImpl {
|
|||
|
||||
class FleshAllergyWatcher extends Watcher {
|
||||
|
||||
public int creaturesDiedThisTurn = 0;
|
||||
private int creaturesDiedThisTurn = 0;
|
||||
|
||||
public FleshAllergyWatcher() {
|
||||
super(FleshAllergyWatcher.class, WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public FleshAllergyWatcher(final FleshAllergyWatcher watcher) {
|
||||
private FleshAllergyWatcher(final FleshAllergyWatcher watcher) {
|
||||
super(watcher);
|
||||
}
|
||||
|
||||
|
@ -79,6 +79,10 @@ class FleshAllergyWatcher extends Watcher {
|
|||
}
|
||||
}
|
||||
|
||||
public int getCreaturesDiedThisTurn(){
|
||||
return creaturesDiedThisTurn;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
super.reset();
|
||||
|
@ -94,7 +98,7 @@ class FleshAllergyEffect extends OneShotEffect {
|
|||
staticText = "Its controller loses life equal to the number of creatures that died this turn";
|
||||
}
|
||||
|
||||
public FleshAllergyEffect(final FleshAllergyEffect effect) {
|
||||
private FleshAllergyEffect(final FleshAllergyEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
|
@ -110,7 +114,7 @@ class FleshAllergyEffect extends OneShotEffect {
|
|||
if (permanent != null && watcher != null) {
|
||||
Player player = game.getPlayer(permanent.getControllerId());
|
||||
if (player != null) {
|
||||
int amount = watcher.creaturesDiedThisTurn;
|
||||
int amount = watcher.getCreaturesDiedThisTurn();
|
||||
if (amount > 0) {
|
||||
player.loseLife(amount, game, false);
|
||||
return true;
|
||||
|
|
Loading…
Reference in a new issue