public void OnDataRetrieved(AbstractDatagram datagram) { switch (datagram.GetDatagramId()) { case RequestIdentifiers.UsersInfo: _currentDataToUpdate = datagram as UsersInformationRequestBody; UpdateUsersInfo(_currentDataToUpdate); break; } }
private void UpdateUsersInfo(UsersInformationRequestBody usersInformation) { // lock foreach (UserInfo info in usersInformation.UsersInformation) { if (_usersInfoStorage.ContainsKey(info.UserIdentifier)) { _usersInfoStorage[info.UserIdentifier].UpdateData(info); } } }
private void SendInformation() { while (true) { try { lock (connectDisconnectLock) { var usersInformation = _userManager.GetUsersData(); foreach (var userInfo in usersInformation) { if (usersInformation.Count == 1) { continue; } var userInfoRequestBody = new UsersInformationRequestBody() { UserId = userInfo.UsersInfo.UserIdentifier.ToString(), UsersInformation = new UserInfo[usersInformation.Count - 1] }; var addingCount = 0; foreach (var _userInfo in usersInformation) { if (_userInfo.UsersInfo.UserIdentifier == userInfo.UsersInfo.UserIdentifier) { continue; } userInfoRequestBody.UsersInformation[addingCount] = _userInfo.UsersInfo; addingCount++; } var bytes = BinarySerializer.Serialize(userInfoRequestBody); _listener.Send(bytes, userInfo.EndPoint); } } Thread.Sleep(33); } catch (Exception e) { Console.Write("Error till sending data: " + e + "\n"); SendInformation(); } } }