/// <summary> /// Adds the client to the channel /// </summary> public async Task <ClientJoinResult> AddClient(MqClient client) { if (Authenticator != null) { bool allowed = await Authenticator.Authenticate(this, client); if (!allowed) { return(ClientJoinResult.Unauthorized); } } if (Options.ClientLimit > 0 && _clients.Count >= Options.ClientLimit) { return(ClientJoinResult.Full); } ChannelClient cc = new ChannelClient(this, client); _clients.Add(cc); client.Join(cc); if (EventHandler != null) { await EventHandler.OnClientJoined(cc); } IEnumerable <ChannelQueue> list = _queues.GetAsClone(); foreach (ChannelQueue queue in list) { _ = queue.Trigger(); } return(ClientJoinResult.Success); }