public Task <int> StartExchangePipeline(InDataWrapper <AdInputType> inData) { throw new NotImplementedException(); }
public async Task <int> StartExchangePipeline(InDataWrapper <AdInputType> inData) { //DEBUG //TODO: тут можно не дополнять, if (inData == null) { inData = new InDataWrapper <AdInputType> { Datas = new List <AdInputType>() }; } var countTryingSendData = 0; //Счетчик попыток отправит подготовленные данные. foreach (var rule in _rules) { StatusString.Clear(); StatusString.AppendLine($"RuleName= \"{rule.Option.Name}\""); //КОМАНДА------------------------------------------------------------- if (IsCommandHandler(inData.Command, rule.Option.Name)) { StatusString.AppendLine($"Command= \"{inData.Command}\""); var commandViewRule = rule.ViewRules.FirstOrDefault(); _currentRequest = commandViewRule?.GetCommandRequestString(); InputData = new InDataWrapper <AdInputType> { Command = inData.Command }; RaiseSendDataRx.OnNext(this); countTryingSendData++; continue; } //ДАННЫЕ-------------------------------------------------------------- var takesItems = FilteredAndOrderedAndTakesItems(inData.Datas, rule.Option.WhereFilter, rule.Option.OrderBy, rule.Option.TakeItems, rule.Option.DefaultItemJson)?.ToList(); if (IsDataHandler(inData.Command, takesItems)) { foreach (var viewRule in rule.ViewRules) { foreach (var request in viewRule.GetDataRequestString(takesItems)) { if (request == null) //правило отображения не подходит под ДАННЫЕ { continue; } _currentRequest = request; InputData = new InDataWrapper <AdInputType> { Datas = _currentRequest.BatchedData.ToList() }; StatusString.AppendLine($"viewRule.Id = \"{viewRule.Option.Id}\". CountItem4Sending = \"{InputData.Datas.Count}\""); RaiseSendDataRx.OnNext(this); countTryingSendData++; } } } } //Конвеер обработки входных данных завершен StatusString.Clear(); await Task.CompletedTask; return(countTryingSendData); }