/// <summary> /// Обработка прямого прохода. /// </summary> /// <param name="args">Аргумент прохода по трубопроводу.</param> /// <returns>Аргумент прохода по трубопроводу.</returns> public BypassedArgument DirectBypass(BypassedArgument args) { Thread.Sleep(100); args.Add(_component.Name, _component.Level); args = _component.Parent.DirectBypass(args); return args; }
/// <summary> /// Обработка обратного прохода с поднятием данных для прямого прохода. /// </summary> /// <remarks>Метод необходим для обработки дочерних узлов в прямом проходе, /// для соблюдения порядка вложенности.</remarks> /// <param name="args">Аргумент прохода по трубопроводу.</param> /// <returns>Аргумент прохода по трубопроводу.</returns> public BypassedArgument RiseDirectBypass(BypassedArgument args) { if (_component.Children == null || _component.Children.Count == 0) throw new Exception("Нет входного узла"); foreach (Component child in _component.Children) args = child.RiseDirectBypass(args); args.Add(_component.Name, _component.Level); return args; }
/// <summary> /// Обработка прямого прохода. /// </summary> /// <param name="args">Аргумент прохода по трубопроводу.</param> /// <returns>Аргумент прохода по трубопроводу.</returns> public BypassedArgument DirectBypass(BypassedArgument args) { string lastName = args.TransportTrace.Last().Key; foreach (Component child in _component.Children) if (child.Name != lastName) args = child.RiseDirectBypass(args); args.Add(_component.Name, _component.Level); return _component.Parent.DirectBypass(args); }
/// <summary> /// Обработка обратного прохода. /// </summary> /// <param name="args">Аргумент прохода по трубопроводу.</param> /// <returns>Аргумент прохода по трубопроводу.</returns> public BypassedArgument ReverseBypass(BypassedArgument args) { args.Add(_component.Name, _component.Level); Thread.Sleep(100); if (_component.Children == null || _component.Children.Count == 0) throw new Exception("Нет входного узла"); foreach (Component child in _component.Children) args = child.ReverseBypass(args); return args; }