예제 #1
0
        public Task PublishCompleteToChannel(ChannelEventEnum channelName)
        {
            var channel = ChannelMessageDictionary.GetValueOrDefault(channelName);

            channel.OnCompleted();
            return(Task.CompletedTask);
        }
예제 #2
0
        public Task PublishErrorToChannel(ChannelEventEnum channelName, Exception exception)
        {
            var channel = ChannelMessageDictionary.GetValueOrDefault(channelName);

            channel.OnError(exception);
            Log.Information($"[{nameof(PublishErrorToChannel)}] Publish Error to channel => {channelName}");
            return(Task.CompletedTask);
        }
예제 #3
0
 public IObservable <object> GetChannel(ChannelEventEnum channelName)
 {
     if (ChannelMessageDictionary.ContainsKey(channelName))
     {
         Log.Information($"[{nameof(GetChannel)}] Get channel with name {channelName}");
         return(ChannelMessageDictionary[channelName]);
     }
     Log.Information($"[{nameof(GetChannel)}] Channel with name {channelName} was not found... creating a new channel...");
     AddChannel(channelName);
     return(ChannelMessageDictionary[channelName]);
 }
예제 #4
0
        public Task AddChannel(ChannelEventEnum channelName)
        {
            if (ChannelMessageDictionary.ContainsKey(channelName))
            {
                return(Task.CompletedTask);
            }

            var newChannel = new Subject <object>();

            ChannelMessageDictionary.Add(channelName, newChannel);
            Log.Information($"[{nameof(AddChannel)}] Added new channel => {channelName}");
            return(Task.CompletedTask);
        }
예제 #5
0
 public Task RemoveChannel(ChannelEventEnum channelName)
 {
     if (ChannelMessageDictionary.ContainsKey(channelName))
     {
         var res = ChannelMessageDictionary.Remove(channelName);
         Log.Information(res ? $"[{nameof(RemoveChannel)}] Remove channel with name {channelName}" : $"[{nameof(RemoveChannel)}] Error removing channel with name {channelName}");
         return(Task.CompletedTask);
     }
     else
     {
         Log.Information($"[{nameof(RemoveChannel)}] Could not find channel with name {channelName}");
         return(Task.CompletedTask);
     }
 }
예제 #6
0
        public Task PublishNextToChannel <T>(ChannelEventEnum channelName, T message)
        {
            if (message is null)
            {
                return(Task.CompletedTask);
            }
            var channel = ChannelMessageDictionary.GetValueOrDefault(channelName);

            if (channel is null)
            {
                throw new SmartHubException($"[{nameof(PublishNextToChannel)}] Channel {channelName} is null ");
            }
            channel.OnNext(message);
            return(Task.CompletedTask);
        }