public bool AddClient(Client client) { if (Clients.Keys.Contains(client)) { return(false); } ConferenceUser conferenceUser = new ConferenceUser(client); Clients.Add(client, conferenceUser); conferenceUser.SendRequestToEnterConference(Id, Creator, Clients.Values.ToList()); client.IsSoundMuteSwitched += Client_IsSoundMuteSwitched; return(true); }
public Conference(Client creator, IEnumerable <Client> clients, out int id) { _soundOnUsers = new List <Client>(); _soundBuffer = new Queue <SoundBufferItem>(); id = _idController.GetID(); Id = id; Creator = new ConferenceUser(creator) { InConference = true }; Clients = clients.Select(client => new ConferenceUser(client)).ToDictionary(x => x.Client) ?? throw new ArgumentNullException(nameof(clients)); foreach (ConferenceUser user in Clients.Values) { user.SendRequestToEnterConference(Id, Creator, Clients.Values.ToList()); } Clients.Add(Creator.Client, Creator); foreach (Client client in Clients.Keys) { client.IsSoundMuteSwitched += Client_IsSoundMuteSwitched; } }
public void SendRequestToEnterConference(int id, ConferenceUser creator, List <ConferenceUser> conferenceUsers) => NetworkManager.SendRequestToEnterConference(id, Client, creator.Client, conferenceUsers.Select(x => x.Client).Where(x => x != Client));