private void DistributeComunicatToAll(Comunicat item)
        {
            var connectedUsers = listaPolaczec.Keys;
            String[] oldBlackList = item.NotToUser;
            // dodajemu użytkowników do czarnej listy
            HashSet<string> newBlackList = new HashSet<string>(item.NotToUser);
            foreach(var user in listaPolaczec.Keys)
            {
                if(!newBlackList.Contains(user))
                {
                    newBlackList.Add(user);
                }
            }

            item.NotToUser = newBlackList.ToArray<String>();
            // wysyłamy wiadomości do urzytkowników
            foreach(var user in listaPolaczec)
            {
                if(!oldBlackList.Contains(user.Key) && user.Key != UNKNOWN_USER)
                {
                    foreach(var modul in user.Value)
                    {
                        modul.addComunicatToSend(item);
                    }
                }
            }
        }
 // comunicat UNKNOWN - zawiera w To user UNKNOWN na pierwszej pozycji oraz adres połączenia na drugiej pozycji
 private void DistributeComunicatToUnknown(Comunicat item)
 {
     ICollection<ComunicationItem> unknowUsers = null;
     if(listaPolaczec.TryGetValue(UNKNOWN_USER, out unknowUsers) )
     {
         foreach(var user in unknowUsers)
         {
             if (item.ToUser[1] == user.Connection.getConnectionAddres())
             {
                 user.addComunicatToSend(item);
             }
         }
     }
     // jak nie mamy kategori unknow... nic nie robimy
     //var unknowsUsers = item.
 }
 public void addComunicatToSend(Comunicat com)
 {
     comunicatsToSend.Enqueue(com);
 }
Example #4
0
 public static string serialize(Comunicat comunicatToSerialize)
 {
     return JsonConvert.SerializeObject(comunicatToSerialize, Formatting.None);
 }
  public void DistributeComunicat(Comunicat item)
  {
      var connectedUsers = listaPolaczec.Keys;
      HashSet<string> oldBlackList = new HashSet<string>(item.NotToUser);
      
      if(item.ToUser.Contains("ALL"))
      {
          DistributeComunicatToAll(item);
      }
      else if(item.ToUser.Contains("UNKNOWN"))
      {
          DistributeComunicatToUnknown(item);
      }
      else
      {
          //tworzymy nową czarną listę do komunikatu
          HashSet<string> newBlackList = new HashSet<string>(item.NotToUser);
          foreach(var userName in item.ToUser)
          {
              if (!newBlackList.Contains(userName)) newBlackList.Add(userName);
          }
          item.NotToUser = newBlackList.ToArray();
          //wysyłamy do wszystkich  osob w ToUser którzy nie są na czarnej liście
          foreach(var userName in item.ToUser)
          {
              if(!oldBlackList.Contains(userName))
              {
                  ICollection<ComunicationItem> userComunicationItems = null;
                  if(listaPolaczec.TryGetValue(userName,out userComunicationItems) )
                  {
                      // oraz do wszystkich rodzajow polaczenia
                      foreach(var comItem in userComunicationItems)
                      {
                          comItem.addComunicatToSend(item);
                      }
                  }
              }
          }
      }
      
 }