protected override async Task ExecuteAsync() { var sw = new Stopwatch(); sw.Start(); var channelStats = await _statQuery.GetChannelStatsAsync(); var statDto = new MiningStatDto { ChannelStats = channelStats?.ToDictionary(x => x.Channel.ToLower()), SupplyRate = await _nexusQuery.GetSupplyRate() }; var diffs = channelStats?.ToDictionary(x => x.Channel.ToLower(), y => y.Difficulty); await _redisCommand.SetAsync(Settings.Redis.SupplyRatesLatest, statDto.SupplyRate); await _redisCommand.SetAsync(Settings.Redis.ChannelStatsLatest, statDto.ChannelStats); await _redisCommand.SetAsync(Settings.Redis.DifficultyStatPubSub, diffs); await _redisCommand.PublishAsync(Settings.Redis.MiningStatPubSub, statDto); await _redisCommand.PublishAsync(Settings.Redis.DifficultyStatPubSub, diffs); sw.Stop(); Logger.LogInformation($"Mining stats job completed in {sw.Elapsed:c}"); }
private Task OnStatPublishAsync(MiningStatDto miningStatDto) { return(_miningContext.Clients.All.SendAsync("StatPublish", Helpers.JsonSerialise(miningStatDto))); }