fixed some merge issues + added additional connection properties

This commit is contained in:
betasteward 2015-06-12 15:59:02 -04:00
parent 38da157f8c
commit 864a318b3f
21 changed files with 241 additions and 1630 deletions

View file

@ -60,6 +60,7 @@ import mage.interfaces.ActionWithResult;
import org.mage.network.interfaces.MageServer;
import mage.interfaces.ServerState;
import mage.interfaces.callback.ClientCallback;
import mage.remote.Connection;
import mage.remote.DisconnectReason;
import mage.remote.MageVersionException;
import mage.server.draft.CubeFactory;
@ -242,16 +243,16 @@ public class Main implements MageServer {
}
@Override
public boolean registerClient(String userName, String sessionId, MageVersion version, String host) {
public boolean registerClient(Connection connection, String sessionId, MageVersion version, String host) {
try {
if (version.compareTo(Main.getVersion()) != 0) {
logger.info("MageVersionException: userName=" + userName + ", version=" + version);
LogServiceImpl.instance.log(LogKeys.KEY_WRONG_VERSION, userName, version.toString(), Main.getVersion().toString(), sessionId);
logger.info("MageVersionException: userName=" + connection.getUsername() + ", version=" + version);
LogServiceImpl.instance.log(LogKeys.KEY_WRONG_VERSION, connection.getUsername(), version.toString(), Main.getVersion().toString(), sessionId);
String message = "Wrong client version " + version + ", expecting version " + Main.getVersion() + ". \r\n\r\nPlease download needed version from http://XMage.de or http://www.slightlymagic.net/forum/viewforum.php?f=70";
server.informClient(sessionId, "Wrong version", message, MessageType.ERROR);
return false;
}
return SessionManager.getInstance().registerUser(sessionId, userName, host);
return SessionManager.getInstance().registerUser(sessionId, connection, host);
} catch (MageException ex) {
// if (ex instanceof MageVersionException) {
// throw (MageVersionException)ex;

View file

@ -43,6 +43,7 @@ import mage.MageException;
import mage.interfaces.callback.ClientCallback;
import mage.players.net.UserData;
import mage.players.net.UserGroup;
import mage.remote.Connection;
import mage.server.game.GamesRoomManager;
import mage.server.util.ConfigSettings;
import mage.view.UserDataView;
@ -83,7 +84,7 @@ public class Session {
this.lock = new ReentrantLock();
}
public String registerUser(String userName) throws MageException {
public String registerUser(Connection connection) throws MageException {
// String returnMessage = registerUserHandling(userName);
// if (returnMessage != null) {
// sendErrorMessageToClient(returnMessage);
@ -95,15 +96,16 @@ public class Session {
Main.getInstance().pingClient(sessionId);
}
}, 10, 60, TimeUnit.SECONDS);
return registerUserHandling(userName);
return registerUserHandling(connection);
}
public boolean isLocked() {
return lock.isLocked();
}
public String registerUserHandling(String userName) throws MageException {
public String registerUserHandling(Connection connection) throws MageException {
this.isAdmin = false;
String userName = connection.getUsername();
if (userName.equals("Admin")) {
return "User name Admin already in use";
}
@ -141,6 +143,9 @@ public class Session {
return new StringBuilder("Error connecting ").append(userName).toString();
}
this.userId = user.getId();
setUserData(user, connection);
if (reconnect) { // must be connected to receive the message
UUID chatId = GamesRoomManager.getInstance().getRoom(GamesRoomManager.getInstance().getMainRoomId()).getChatId();
if (chatId != null) {
@ -164,25 +169,25 @@ public class Session {
this.userId = user.getId();
}
public boolean setUserData(String userName, UserDataView userDataView) {
User user = UserManager.getInstance().findUser(userName);
public boolean setUserData(User user, Connection connection) {
// User user = UserManager.getInstance().findUser(userName);
if (user != null) {
UserData userData = user.getUserData();
if (userData == null) {
userData = new UserData(UserGroup.PLAYER, userDataView.getAvatarId(),
userDataView.isShowAbilityPickerForced(), userDataView.allowRequestShowHandCards(),
userDataView.confirmEmptyManaPool(), userDataView.getUserSkipPrioritySteps(),
userDataView.getFlagName());
userData = new UserData(UserGroup.PLAYER, connection.getAvatarId(),
connection.isShowAbilityPickerForced(), connection.allowRequestShowHandCards(),
connection.confirmEmptyManaPool(), connection.getUserSkipPrioritySteps(),
connection.getFlagName());
user.setUserData(userData);
} else {
if (userDataView.getAvatarId() == 51) { // Update special avatar if first avatar is selected
updateAvatar(userName, userData);
if (connection.getAvatarId() == 51) { // Update special avatar if first avatar is selected
updateAvatar(connection.getUsername(), userData);
}
userData.setAvatarId(userDataView.getAvatarId());
userData.setShowAbilityPickerForced(userDataView.isShowAbilityPickerForced());
userData.setAllowRequestShowHandCards(userDataView.allowRequestShowHandCards());
userData.setUserSkipPrioritySteps(userDataView.getUserSkipPrioritySteps());
userData.setConfirmEmptyManaPool(userDataView.confirmEmptyManaPool());
userData.setAvatarId(connection.getAvatarId());
userData.setShowAbilityPickerForced(connection.isShowAbilityPickerForced());
userData.setAllowRequestShowHandCards(connection.allowRequestShowHandCards());
userData.setUserSkipPrioritySteps(connection.getUserSkipPrioritySteps());
userData.setConfirmEmptyManaPool(connection.confirmEmptyManaPool());
}
return true;
}

View file

@ -32,6 +32,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import mage.MageException;
import mage.remote.Connection;
import mage.server.services.LogKeys;
import mage.server.services.impl.LogServiceImpl;
import mage.view.UserDataView;
@ -73,23 +74,23 @@ public class SessionManager {
// sessions.put(sessionId, session);
// }
public boolean registerUser(String sessionId, String userName, String host) throws MageException {
public boolean registerUser(String sessionId, Connection connection, String host) throws MageException {
Session session = new Session(sessionId);
sessions.put(sessionId, session);
session.setHost(host);
// Session session = sessions.get(sessionId);
// if (session != null) {
String returnMessage = session.registerUser(userName);
String returnMessage = session.registerUser(connection);
if (returnMessage == null) {
LogServiceImpl.instance.log(LogKeys.KEY_USER_CONNECTED, userName, session.getHost(), sessionId);
LogServiceImpl.instance.log(LogKeys.KEY_USER_CONNECTED, connection.getUsername(), session.getHost(), sessionId);
logger.info(userName + " joined server");
logger.info(connection.getUsername() + " joined server");
logger.debug("- userId: " + session.getUserId());
logger.debug("- sessionId: " + sessionId);
logger.debug("- host: " + session.getHost());
return true;
}
logger.debug(userName + " not registered: " + returnMessage);
logger.debug(connection.getUsername() + " not registered: " + returnMessage);
Main.getInstance().informClient(sessionId, "Connection Error", returnMessage, MessageType.ERROR);
// Server.informClient(sessionId, returnMessage, MessageType.ERROR);
@ -110,14 +111,14 @@ public class SessionManager {
return false;
}
public boolean setUserData(String userName, String sessionId, UserDataView userDataView) throws MageException {
Session session = sessions.get(sessionId);
if (session != null) {
session.setUserData(userName, userDataView);
return true;
}
return false;
}
// public boolean setUserData(String userName, String sessionId, UserDataView userDataView) throws MageException {
// Session session = sessions.get(sessionId);
// if (session != null) {
// session.setUserData(userName, userDataView);
// return true;
// }
// return false;
// }
public void disconnect(String sessionId, DisconnectReason reason) {
Session session = sessions.get(sessionId);

View file

@ -123,17 +123,10 @@ public class GamesRoomImpl extends RoomImpl implements GamesRoom, Serializable {
for (User user : UserManager.getInstance().getUsers()) {
Session session = SessionManager.getInstance().getSession(user.getSessionId());
try {
<<<<<<< HEAD
users.add(new UsersView(user.getName(), user.getInfo(), user.getGameInfo(), session.getPingInfo()));
users.add(new UsersView(user.getUserData().getFlagName(), user.getName(), user.getInfo(), user.getGameInfo(), session.getPingInfo()));
} catch (Exception ex) {
logger.fatal("User update exception: " + user.getName() + " - " + ex.toString(), ex);
users.add(new UsersView(user.getName(), user.getInfo(), "[exception]", session.getPingInfo()));
=======
users.add(new UsersView(user.getUserData().getFlagName(), user.getName(), user.getInfo(), user.getGameInfo(), user.getPingInfo()));
} catch (Exception ex) {
logger.fatal("User update exception: " + user.getName() + " - " + ex.toString(), ex);
users.add(new UsersView(user.getUserData().getFlagName(), user.getName(), user.getInfo(), "[exception]", user.getPingInfo()));
>>>>>>> master
users.add(new UsersView(user.getUserData().getFlagName(), user.getName(), user.getInfo(), "[exception]", session.getPingInfo()));
}
}