private async void AcceptClients() { //TODO: Thread.CurrentThread.Name = "AtomServer.AcceptClients"; while (this.State == AtomServerState.Started) { var client = this._server.AcceptTcpClient(); var channel = new AtomChannel(this, client); this._channels.TryAdd(Guid.NewGuid(), channel); await this._plugin.OnChannelConnectedAsync(channel); this.ChannelConnected?.Invoke(this, new AtomChannelConnectedEventArgs(channel)); } }
internal async Task RemoveChannelAsync(AtomChannel channel) { Guard.NotNull(channel, nameof(channel)); var pair = this._channels.FirstOrDefault(f => f.Value == channel); if (pair.Key == default) { return; } if (this._channels.TryRemove(pair.Key, out _)) { await this._plugin.OnChannelDisconnectedAsync(channel); this.ChannelDisconnected?.Invoke(this, new AtomChannelDisconnectedEventArgs(channel)); } }
internal Stream OnChannelCreatingStream(AtomChannel channel, Stream stream) { return(this._plugin.OnChannelCreatingStream(channel, stream)); }
internal Task OnChannelMessageReceivedAsync(AtomChannel channel, AtomMessage message) { return(this._plugin.OnChannelMessageReceivedAsync(channel, message)); }
internal Task OnChannelSendingMessageAsync(AtomChannel channel, AtomMessage message) { return(this._plugin.OnChannelSendingMessageAsync(channel, message)); }
public AtomChannelDisconnectedEventArgs(AtomChannel channel) { Guard.NotNull(channel, nameof(channel)); this.Channel = channel; }