예제 #1
0
 public override Task OnDisconnectedAsync(Exception exception)
 {
     Console.WriteLine($"--> Connection Closed: {Context.ConnectionId} (roomId: {Context.UserIdentifier})");
     TtsHandler.ConnectClients.Remove(Context.ConnectionId);
     TtsHandler.ClientDisconnected(Context.ConnectionId, Context.UserIdentifier);
     return(base.OnDisconnectedAsync(exception));
 }
예제 #2
0
        protected override async Task RunJobAsync(IServiceProvider serviceProvider, CancellationToken stoppingToken)
        {
            TtsDbContext db         = serviceProvider.GetService <TtsDbContext>();
            TtsHandler   ttsHandler = serviceProvider.GetService <TtsHandler>();

            if (db is null || ttsHandler is null)
            {
                return;
            }

            IEnumerable <Task> requestTasks = db.RequestQueueIngest
                                              .Include(r => r.Reward)
                                              .Include(r => r.Reward.Channel)
                                              .Where(rqi =>
                                                     rqi != null &&
                                                     TtsHandler.ConnectClients.Values.Contains(rqi.Reward.ChannelId.ToString())
                                                     // rqi.RewardId is already being checked
                                                     )
                                              .Select(rqi => rqi.Reward.ChannelId)
                                              .Distinct()
                                              .ToList()
                                              .Select(ttsHandler.TrySendNextTtsRequestForChannel);

            await Task.WhenAll(requestTasks);
        }
예제 #3
0
 public TtsHub(TtsDbContext ttsDbContext, TtsHandler ttsHandler)
 {
     _ttsDbContext = ttsDbContext;
     _ttsHandler   = ttsHandler;
 }