private DataCell GetOutputData(DataCellHeader data_cell_header) { var output_data = _dataCellRepository.Get(new[] { data_cell_header }).FirstOrDefault(); if (output_data == null) { output_data = new DataCell() { Header = data_cell_header, HasValue = null, Data = null }; _dataCellRepository.Add(new[] { output_data }); } return(output_data); }
private DataCell GetDataCell(DataCellHeader data_cell_header) { var data_cell = _dataCellRepository.Get(new[] { data_cell_header }).FirstOrDefault(); if (data_cell == null) { return(new DataCell() { Header = data_cell_header, HasValue = null, Data = null }); //_dataCellRepository.Subscribe(data_cell_header, OnDataReady); // TODO: нужно отправлять запросы за другие узлы для получения данных. } else { return(data_cell); } }
public Task <DataCell> Exec(FunctionHeader function_header, params object[] param) { string root = "User1.Process" + index++; var output_data_header = new DataCellHeader() { CallStack = $"{root}.result".Split('.').ToArray(), }; var input_data = CommandBuilder.BuildInputData(param, $"{root}".Split('.').ToList()); var command_headers = new List <CommandHeader>() { new CommandHeader() { CallStack = $"{root}".Split('.').ToArray(), FunctionHeader = function_header, //CommandBuilder.BuildHeader("Main", $"SimpleMethods.Control.Simple".Split('.').ToList()),//(FunctionHeader)BuildedControlFunction.Header,//CommandBuilder.BuildHeader("Main", $"SimpleMethods.Control.Simple".Split('.').ToList()), //SimpleMethods.Control.Simple.MainHeader, InputDataHeaders = input_data.Select(x => (DataCellHeader)x.Header).ToList(), OutputDataHeader = output_data_header, TriggeredCommands = new List <InvokeHeader>(), ConditionDataHeaders = new List <DataCellHeader>() } }; AddDataCell(input_data); AddCommandHeaders(command_headers); var result = GetDataCell(new[] { output_data_header }).First(); return(Task.Factory.StartNew(() => { while (!result.HasValue.HasValue) { } return result; })); }
/// <summary> /// Запрос данных у другого узла. /// </summary> /// <param name="data_cell_header"></param> /// <param name="ip_address"></param> /// <returns></returns> private DataCell GetDataCellRequest(DataCellHeader data_cell_header, IPAddress ip_address) { throw new NotImplementedException("Запрос данных у других узлов ещё не реализован."); }