public bool ConnectUser(string userID, int connectionID, int senderID, float sessionTime, out string tokenID, out string message)
{
ClientInfo client;
lock (lockObject)
{
if(!Clients.TryGetValue(userID, out client)){
message = "Error :: User " + userID + " does not exist";
tokenID = "NoToken";
Debug.LogWarning(message);
return false;
}
}
lock (lockConnectedObject)
{
if (ConnectedClients.ContainsKey(connectionID))
{
message = "Error :: User " + userID + " is Connected with " + connectionID;
tokenID = "NoToken";
Debug.LogError(message);
return false;
}
client.Connect(connectionID, senderID, sessionTime, DateTime.Now);
ConnectedClients.Add(connectionID, client);
_clientsConnectedStatusUpdate = true;
_clientsConnectedUserNameStatusUpdate = true;
}
string genToken = generateToken(userID);
lock (lockTokenObject)
{
if ((client.TokenID != null && client.TokenID.Length >= 0 ) || TokenClients.ContainsKey(genToken))
{
message = "Error :: User " + userID + " has a Token Generated or the Token exists : " + genToken;
tokenID = "NoToken";
return false;
}
client.setTokenID(genToken);
TokenClients.Add(genToken, client);
message = "Success :: User " + userID + " is Connected";
tokenID = genToken;
}
GameServer.ServerInfoManager.PlayerStatusUpdate(client.UserName, client.isConnected, GameServer.getServerTime());
return true;
}