コード例 #1
0
ファイル: Replicator.cs プロジェクト: Jevvry/Stl.Fusion
        protected virtual ReplicatorChannelProcessor CreateChannelProcessor(Symbol publisherId)
        {
            var channelProcessor = new ReplicatorChannelProcessor(this, publisherId);

            channelProcessor.RunAsync().ContinueWith(_ => {
                // Since ChannelProcessor is AsyncProcessorBase desc.,
                // its disposal will shut down RunAsync as well,
                // so "subscribing" to RunAsync completion is the
                // same as subscribing to its disposal.
                ChannelProcessors.TryRemove(publisherId, channelProcessor);
            });
            return(channelProcessor);
        }
コード例 #2
0
ファイル: Replicator.cs プロジェクト: crui3er/Stl.Fusion
        protected virtual ReplicatorChannelProcessor CreateChannelProcessor(Symbol publisherId)
        {
            var logger           = Services.GetRequiredService <ILoggerFactory>().CreateLogger(nameof(ReplicatorChannelProcessor));
            var channelProcessor = new ReplicatorChannelProcessor(this, publisherId, logger);

            channelProcessor.Run().ContinueWith(_ => {
                // Since ChannelProcessor is AsyncProcessorBase desc.,
                // its disposal will shut down Run as well,
                // so "subscribing" to Run completion is the
                // same as subscribing to its disposal.
                ChannelProcessors.TryRemove(publisherId, channelProcessor);
            });
            return(channelProcessor);
        }
コード例 #3
0
        protected virtual void OnChannelAttached(Channel <Message> channel)
        {
            var channelProcessor = CreateChannelProcessor(channel);

            if (!ChannelProcessors.TryAdd(channel, channelProcessor))
            {
                return;
            }
            channelProcessor.RunAsync().ContinueWith(_ => {
                // Since ChannelProcessor is AsyncProcessorBase desc.,
                // its disposal will shut down RunAsync as well,
                // so "subscribing" to RunAsync completion is the
                // same as subscribing to its disposal.
                ChannelProcessors.TryRemove(channel, channelProcessor);
            });
        }