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);
         }
     }
 }
Beispiel #3
0
        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();
                }
            }
        }