/// <summary> /// Creates a child to this hierarchy node. /// </summary> /// <param name="input">The input suspension state of the child.</param> /// <param name="behavior">The desired behavior.</param> /// <returns>The child hierarchy.</returns> public HierarchicalSuspenderNode CreateChild(IPipelineStage <PipelineSuspensionState> input, HierarchicalBehavior behavior) { return(new HierarchicalSuspenderNode(Output, input, behavior)); }
internal HierarchicalSuspenderNode(IPipelineStage <PipelineSuspensionState> parent, IPipelineStage <PipelineSuspensionState> input, HierarchicalBehavior behavior) { if (behavior == HierarchicalBehavior.WeakenSuspensionState) { Output = PipelineOperations.Create("Hierarchical fusion (weaken suspension)", GetWeakestState, parent, input); } else { Output = PipelineOperations.Create("Hierarchical fusion (propagate suspend)", PropagateSuspensionOnly, parent, input); } }