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);
        }