Example #1
0
        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));
            }
        }
Example #2
0
        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));
            }
        }
Example #3
0
 internal Stream OnChannelCreatingStream(AtomChannel channel, Stream stream)
 {
     return(this._plugin.OnChannelCreatingStream(channel, stream));
 }
Example #4
0
 internal Task OnChannelMessageReceivedAsync(AtomChannel channel, AtomMessage message)
 {
     return(this._plugin.OnChannelMessageReceivedAsync(channel, message));
 }
Example #5
0
 internal Task OnChannelSendingMessageAsync(AtomChannel channel, AtomMessage message)
 {
     return(this._plugin.OnChannelSendingMessageAsync(channel, message));
 }
Example #6
0
        public AtomChannelDisconnectedEventArgs(AtomChannel channel)
        {
            Guard.NotNull(channel, nameof(channel));

            this.Channel = channel;
        }