/// <summary> /// Проверить ответ, Присвоить выходные данные. /// </summary> /// <param name="data"></param> /// <returns></returns> public bool SetDataByte(byte[] data) { var format = _currentRequest.ResponseOption.Format; if (data == null) { IsOutDataValid = false; OutputData = new ResponseDataItem <AdInputType> { ResponseData = null, Encoding = format, IsOutDataValid = IsOutDataValid }; return(false); } var stringResponse = data.ArrayByteToString(format); IsOutDataValid = (stringResponse == _currentRequest.ResponseOption.Body); OutputData = new ResponseDataItem <AdInputType> { ResponseData = stringResponse, Encoding = format, IsOutDataValid = IsOutDataValid }; StatusString.AppendLine($"SetDataByte.StringResponse= \"{stringResponse}\" Length= \"{data.Length}\""); return(IsOutDataValid); }
public byte[] GetDataByte() { var stringRequset = _currentRequest.StringRequest; var format = _currentRequest.RequestOption.Format; StatusString.AppendLine($"GetDataByte.StringRequest= \"{stringRequset}\". Lenght= \"{stringRequset.Length}\""); //Преобразовываем КОНЕЧНУЮ строку в массив байт var resultBuffer = stringRequset.ConvertString2ByteArray(format); StatusString.AppendLine($"GetDataByte.ByteRequest= \"{ resultBuffer.ArrayByteToString("X2")}\" Lenght= \"{resultBuffer.Length}\""); return(resultBuffer); }
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); }