protected override async Task ExecuteAsync(CancellationToken stoppingToken) { try { //TODO: завести команду в нормальном виде а не вот это вот все _bitfinexSocketService.SendCommand("{\"event\":\"conf\",\"flags\":32768}"); var subscriptions = await _taskRepository.GetPairNamesAndFramesForActiveTasksAsync(); if (subscriptions.IsSuccess) { var publisherTasks = subscriptions.Result .Select(r => _candleHistoryPublisher.ReceiveAndPublishCandleAsync(r.pairName, r.frame)); await Task.WhenAll(publisherTasks); subscriptions.Result.Select(r => _messageGenerator.Subscribe(r.pairName, r.frame)) .Where(r => r.IsSuccess) .ToList() .ForEach(r => _bitfinexSocketService.SendCommand(r.Result)); } } catch (Exception ex) { _logger.LogError(ex, "В процессе разогрева подписок на свечи произошла ошибка"); throw; } }
private async Task RequestAndPublishHistoryCandlesAsync(BaseMessage <CandleListnerParameters> subscription) { if (subscription == default) { throw new ArgumentNullException($"Входной параметр {nameof(subscription)} не может быть null"); } //TODO: think about IsMaintenanceMode, what we can do? if (subscription.MessageType == BusMessageType.SubscribeChannel && !_bitfinexSocketService.IsMaintenanceMode) { await _candleHistoryPublisher.ReceiveAndPublishCandleAsync(subscription.Content.ChannelName, subscription.Content.Period); } }