internal virtual void Login(string _userName, string _password, ServerUnit _serverUnit) { if (serverUnit != null) { Kick(); serverUnit.Kick(); serverUnit = null; } if (isWaittingForResponse) { replaceServerUnitCallBack = delegate() { serverUnit = _serverUnit; _serverUnit.GetLoginResult(this); }; } else { serverUnit = _serverUnit; _serverUnit.GetLoginResult(this); } }
private void SocketAccept(IAsyncResult _result) { Socket clientSocket = socket.EndAccept(_result); Console.WriteLine("One user connect"); lock (locker) { ServerUnit <T> serverUnit; if (unitPool.Count == 0) { serverUnit = new ServerUnit <T>(); } else { serverUnit = unitPool.Last.Value; unitPool.RemoveLast(); } noLoginList.AddLast(serverUnit); serverUnit.Init(clientSocket, tick); } BeginAccept(); }
public FormRobotControl() { InitializeComponent(); // Definition globalDataSet = new GlobalDataSet(); helperFunctions = new HelperFunctions(globalDataSet); dataPackager = new DataPackager(globalDataSet); tcpServer = new ServerUnit(globalDataSet); // Initialize sampleStep = DEFAULT_SAMPLE_TIME_FACTOR; aliveBit = false; notExecuted = true; // User defines globalDataSet.DebugMode = false; globalDataSet.ShowProgramDuration = false; // Set event that is fired by datapackager named newPackageEvent with method dataPackageReceived (listener: server) // Set event that is fired by server named newServerEvent with method dataPackageServerReceived (listener: dataPackager) dataPackager.newPackageEvent += new DataPackager.DataPackagedEventHandler(tcpServer.dataPackageReceived); // Start server tcpServer.startServer(); // Start thread to package data (the data were packaged before the client is connected dataPackager.startPackaging(); // Check sensor alive in background indicatorLedThread = new Thread(new ThreadStart(indicatorLed)); indicatorLedThread.Start(); ActionSelector actionSelector = new ActionSelector(globalDataSet); }
public FormWelcome(ServerUnit unit) { _unit = unit; InitializeComponent(); if (unit != null) { txtWelcome.Text = _unit.Welcome.ToSingleString(); txtLogIn.Text = _unit.LogInWelcome.ToSingleString(); txtLogOut.Text = _unit.LogOutWelcome.ToSingleString(); } this.DialogResult = DialogResult.Cancel; }
internal override void Login(string _userName, string _password, ServerUnit _serverUnit) { bool result = userData.passward.Equals(_password); if (!result) { _serverUnit.GetLoginResult(null); } else { base.Login(_userName, _password, _serverUnit); } }
private void SocketAccept(IAsyncResult _result) { Socket clientSocket = socket.EndAccept(_result); Console.WriteLine("One user connect"); ServerUnit <T> serverUnit = new ServerUnit <T>(); lock (noLoginList) { noLoginList.Add(serverUnit); serverUnit.Init(clientSocket, tick); } BeginAccept(); }
internal void GetLoginResult(UserData _userData, ServerUnit _serverUnit) { if (_userData != null) { SuperUserServiceBase userService = Server.getUserService(); userService.SetUserData(_userData); userService.SetServerUnit(_serverUnit); dic.Add(_userData.userName, userService); _serverUnit.GetLoginResult(userService); } else { _serverUnit.GetLoginResult(null); } }
private void SocketAccept(IAsyncResult _result) { Socket clientSocket = socket.EndAccept(_result); Console.WriteLine("One user connected"); T unit = new T(); ServerUnit serverUnit = new ServerUnit(); lock (list) { list.Add(serverUnit); } serverUnit.Init(clientSocket, unit); unit.Init(serverUnit.SendData); BeginAccept(); }
private void addUnit(string side, string x, string y, string z, string type, int cnnId) { Debug.Log("addUnit()"); ServerUnit su = new ServerUnit(); int c = units.Count + 1; su.id = c.ToString(); print("ID SERVER UNIT : " + su.id); su.side = side; su.x = x; su.y = y; su.z = z; su.type = type; switch (type) { case TANK: su.health = TANK_HEALTH; break; case JET: su.health = JET_HEALTH; break; case RL: su.health = RL_HEALTH; break; } units.Add(su); //Now tell ALL the clients that a new unit has been added //newUnit|id|side|type|x|y|z string msg = "newUnit|" + su.id + S + su.side + S + su.type + S + su.x + S + su.y + S + su.z; send(msg, reliableChannel, clients); debugText.text = units.Count.ToString() + " units in the game"; }
internal void Login(string _userName, string _password, ServerUnit _serverUnit) { if (dic.ContainsKey(_userName)) { SuperUserServiceBase userService = dic[_userName]; Action <SuperUserServiceBase> callBack = delegate(SuperUserServiceBase _service) { _service.Login(_userName, _password, _serverUnit); }; userService.Process(callBack); } else { Action <Redis> callBack = delegate(Redis _service) { _service.Login(_userName, _password, _serverUnit); }; Redis.Instance.Process(callBack); } }
internal void SetServerUnit(ServerUnit _serverUnit) { serverUnit = _serverUnit; }
internal void Login(string _userName, string _password, ServerUnit _serverUnit) { string key = string.Format("userName_{0}", _userName); if (redisClient.ContainsKey(key)) { string password = redisClient.Get <string>(string.Format("password_{0}", _userName)); if (password.Equals(_password)) { byte[] bytes = redisClient.Get <byte[]>(key); stream.Position = 0; stream.Write(bytes, 0, bytes.Length); stream.Position = 0; UserData userData = (UserData)formatter.Deserialize(stream); Action <UserManager> callBack = delegate(UserManager _service) { _service.GetLoginResult(userData, _serverUnit); }; UserManager.Instance.Process(callBack); } else { Action <UserManager> callBack = delegate(UserManager _service) { _service.GetLoginResult(null, _serverUnit); }; UserManager.Instance.Process(callBack); } } else { UserData userData = Server.getUserData(); userData.Init(_userName, _password); formatter.Serialize(stream, userData); stream.Position = 0; byte[] bytes = stream.GetBuffer(); redisClient.Set(key, bytes); key = string.Format("password_{0}", _userName); redisClient.Set(key, _password); Action <UserManager> callBack = delegate(UserManager _service) { _service.GetLoginResult(userData, _serverUnit); }; UserManager.Instance.Process(callBack); } }
internal void Update() { lock (noLoginList) { tick++; for (int i = noLoginList.Count - 1; i > -1; i--) { ServerUnit <T> serverUnit = noLoginList[i]; int uid = serverUnit.CheckLogin(tick); if (uid == -1) { noLoginList.RemoveAt(i); } else if (uid > 0) { Console.WriteLine("One user login uid:" + uid); noLoginList.RemoveAt(i); if (loginDic.ContainsKey(uid)) { ServerUnit <T> oldServerUnit = loginDic[uid]; oldServerUnit.Kick(); serverUnit.SetUnit(oldServerUnit.unit); loginDic[uid] = serverUnit; } else if (logoutDic.ContainsKey(uid)) { T unit = logoutDic[uid]; logoutDic.Remove(uid); serverUnit.SetUnit(unit); loginDic.Add(uid, serverUnit); } else { T unit = new T(); serverUnit.SetUnit(unit); loginDic.Add(uid, serverUnit); } } } } List <KeyValuePair <int, ServerUnit <T> > > kickList = null; Dictionary <int, ServerUnit <T> > .Enumerator enumerator = loginDic.GetEnumerator(); while (enumerator.MoveNext()) { bool kick = enumerator.Current.Value.Update(tick); if (kick) { if (kickList == null) { kickList = new List <KeyValuePair <int, ServerUnit <T> > >(); } kickList.Add(enumerator.Current); } } if (kickList != null) { for (int i = 0; i < kickList.Count; i++) { KeyValuePair <int, ServerUnit <T> > pair = kickList[i]; loginDic.Remove(pair.Key); logoutDic.Add(pair.Key, pair.Value.unit); } } }
internal void Update() { lock (locker) { tick++; LinkedListNode <ServerUnit <T> > node = noLoginList.First; while (node != null) { LinkedListNode <ServerUnit <T> > nextNode = node.Next; ServerUnit <T> serverUnit = node.Value; int uid = serverUnit.CheckLogin(tick); if (uid == -1) { noLoginList.Remove(node); } else if (uid > 0) { Console.WriteLine("One user login uid:" + uid); noLoginList.Remove(node); if (loginDic.ContainsKey(uid)) { ServerUnit <T> oldServerUnit = loginDic[uid]; oldServerUnit.Kick(); serverUnit.SetUnit(oldServerUnit.unit); loginDic[uid] = serverUnit; } else if (logoutDic.ContainsKey(uid)) { T unit = logoutDic[uid]; logoutDic.Remove(uid); serverUnit.SetUnit(unit); loginDic.Add(uid, serverUnit); } else { T unit = new T(); serverUnit.SetUnit(unit); loginDic.Add(uid, serverUnit); } } node = nextNode; } LinkedList <KeyValuePair <int, ServerUnit <T> > > kickList = null; Dictionary <int, ServerUnit <T> > .Enumerator enumerator = loginDic.GetEnumerator(); while (enumerator.MoveNext()) { bool kick = enumerator.Current.Value.Update(tick); if (kick) { if (kickList == null) { kickList = new LinkedList <KeyValuePair <int, ServerUnit <T> > >(); } kickList.AddLast(enumerator.Current); } } if (kickList != null) { LinkedList <KeyValuePair <int, ServerUnit <T> > > .Enumerator enumerator2 = kickList.GetEnumerator(); while (enumerator2.MoveNext()) { KeyValuePair <int, ServerUnit <T> > pair = enumerator2.Current; loginDic.Remove(pair.Key); logoutDic.Add(pair.Key, pair.Value.unit); unitPool.AddLast(pair.Value); } } } }