public string Login(string username) { //TODO make mqDriver into mqDriver for all servers IServerDestributer serverDist = new LocalServerDestributer(); string reqServer = serverDist.RequestServer(); IMQDriver mqDriver = serverDist.GetMQDriver(reqServer); LockUsername(username, mqDriver); //TODO make mqDriver into single server mqDriver string command = Config.GenerateCommand(Config.CMD.LOGIN_REQUEST, Thread.CurrentThread.ManagedThreadId, username, reqServer, GetClientIP()); bool serverResponded = false; mqDriver.OnResponseRecieved += (cmd) => { string comType = GetCmdType(Config.CMD.LOGIN_RESPONSE); string[] comParts = cmd.Split(':'); if (comParts[0].Equals(comType)) { if (comParts[1].Equals(Thread.CurrentThread.ManagedThreadId)) { if (comParts[2].ToUpper().Equals("OK")) { serverResponded = true; } else { throw new FaultException(cmd); } } } }; Wait(ref serverResponded); ReleaseUsername(username, mqDriver); mqDriver.CloseConnections(); return(GetServerDestributor().RequestServer() + ":9966"); }
public string[] GetRooms() { IMQDriver mqDriver = GetMQDriver(); string command = Config.GenerateCommand(Config.CMD.REQUEST_ROOMS, Thread.CurrentThread.ManagedThreadId); List <string> rooms = new List <string>(); bool aServerHasResponded = false; mqDriver.OnResponseRecieved += (cmd) => { if (!aServerHasResponded) { string cmdType = GetCmdType(Config.CMD.REQUEST_ROOMS_RESPONSE); string[] cmdParts = cmd.Split(':'); if (cmdParts[0].Equals(cmdType)) { if (cmdParts[1].Equals(Thread.CurrentThread.ManagedThreadId)) { for (int i = 2; i < cmdParts.Length; i++) { rooms.Add(cmdParts[i]); } aServerHasResponded = true; } } } }; Wait(ref aServerHasResponded); mqDriver.CloseConnections(); return(rooms.ToArray()); }