// For Composites (internal view) public void ConnectInWithIn(IFlowComposite <TForward, TBackward> @from, IFlowComponentUniqueIncoming <TForward, TBackward> to) { ConnectOutWithIn(from.FlowIn, to); }
public void ConnectOutWithIn(IFlowComponentUniqueOutgoing <TForward, TBackward> @from, IFlowComponentUniqueIncoming <TForward, TBackward> to) { Connect(from.Outgoing, to.Incoming); AddAtomicConnection(from, to); }
public FlowMerger <TForward, TBackward> ConnectOutsWithIn(IFlowComponentUniqueOutgoing <TForward, TBackward>[] fromOuts, IFlowComponentUniqueIncoming <TForward, TBackward> to) { // fromOuts[] --> Merger --> to var elementNos = fromOuts.Length; if (elementNos == 0) { throw new ArgumentException("need at least one source element"); } else if (elementNos == 1) { Connect(fromOuts[0].Outgoing, to.Incoming); AddAtomicConnection(fromOuts[0], to); return(null); } else { // create virtual merging component. var flowVirtualMerger = CreateFlowVirtualMerger(elementNos); for (int i = 0; i < elementNos; i++) { Connect(fromOuts[i].Outgoing, flowVirtualMerger.Incomings[i]); AddAtomicConnection(fromOuts[i], flowVirtualMerger); } Connect(flowVirtualMerger.Outgoing, to.Incoming); AddAtomicConnection(flowVirtualMerger, to); return(flowVirtualMerger); } }
public void ConnectOutWithIn(IFlowComponentUniqueOutgoing <TForward, TBackward> @from, IFlowComponentUniqueIncoming <TForward, TBackward> to) { var newPort = new FlowPort <TForward, TBackward>(); from.Outgoing = newPort; to.Incoming = newPort; AddAtomicConnection(from, to); }