public FlowSplitter <TForward, TBackward> ConnectOutWithIns(IFlowComponentUniqueOutgoing <TForward, TBackward> @from, IFlowComponentUniqueIncoming <TForward, TBackward>[] tos) { // from --> Splitter --> to[] var elementNos = tos.Length; if (elementNos == 0) { throw new ArgumentException("need at least one source element"); } else if (elementNos == 1) { Connect(@from.Outgoing, tos[0].Incoming); AddAtomicConnection(from, tos[0]); return(null); } else { // create virtual splitting component. var flowVirtualSplitter = CreateFlowVirtualSplitter(elementNos); Connect(@from.Outgoing, flowVirtualSplitter.Incoming); AddAtomicConnection(from, flowVirtualSplitter); for (int i = 0; i < elementNos; i++) { Connect(flowVirtualSplitter.Outgoings[i], tos[i].Incoming); AddAtomicConnection(flowVirtualSplitter, tos[i]); } return(flowVirtualSplitter); } }
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); }
public void ConnectOutWithOut(IFlowComponentUniqueOutgoing <TForward, TBackward> @from, IFlowComposite <TForward, TBackward> to) { ConnectOutWithIn(from, to.FlowOut); }
public void ConnectOutWithIn(IFlowComponentUniqueOutgoing <TForward, TBackward> @from, IFlowComponentUniqueIncoming <TForward, TBackward> to) { Connect(from.Outgoing, to.Incoming); AddAtomicConnection(from, to); }