private async void OnClientConnect(object sender, ClientConnectedEventArgs e) { ITcpChannel channel = e.Channel; FreeSwitch freeSwitch = new FreeSwitch(ref channel); try { var added = _clients.TryAdd(channel.ChannelId, freeSwitch); if (added) { await freeSwitch.Connect(); bool ready = await freeSwitch.Resume() && await freeSwitch.MyEvents() && await freeSwitch.DivertEvents(); if (!ready) { await freeSwitch.Close(); return; } } if (ClientReady != null) ClientReady(this, new InboundClientEventArgs(freeSwitch)); } catch (Exception) { if (channel != null) channel.Close(); } }
/// <summary> /// A client has connected (nothing has been sent or received yet) /// </summary> /// <param name="channel">Channel which we created for the remote socket.</param> /// <returns></returns> protected virtual ClientConnectedEventArgs OnClientConnected(ITcpChannel channel) { var args = new ClientConnectedEventArgs(channel); ClientConnected(this, args); return args; }