private bool TryFusedConnect()

in src/CRA.ClientLibrary/Main/CRAWorker.cs [1175:1235]


        private bool TryFusedConnect(
            string otherInstance,
            string fromVertexName,
            string fromVertexOutput,
            string toVertexName,
            string toVertexInput)
        {
            if (otherInstance != InstanceName)
                return false;

            CancellationTokenSource source = new CancellationTokenSource();

            if (_localVertexTable.ContainsKey(fromVertexName) &&
                _localVertexTable[fromVertexName].OutputEndpoints.ContainsKey(fromVertexOutput) &&
                _localVertexTable.ContainsKey(toVertexName) &&
                _localVertexTable[toVertexName].InputEndpoints.ContainsKey(toVertexInput))
            {
                var fromVertex = _localVertexTable[fromVertexName].OutputEndpoints[fromVertexOutput] as IFusableVertexOutputEndpoint;
                var toVertex = _localVertexTable[toVertexName].InputEndpoints[toVertexInput] as IVertexInputEndpoint;

                if (fromVertex != null && toVertex != null && fromVertex.CanFuseWith(toVertex, toVertexName, toVertexInput))
                {
                    if (outConnections.TryAdd(fromVertexName + ":" + fromVertexOutput + ":" + toVertexName + ":" + toVertexInput, source))
                    {
                        Task.Run(() => EgressToVertexInput(fromVertexName, fromVertexOutput, toVertexName, toVertexInput, source));
                        return true;
                    }
                    else
                        return false;
                }
                else
                    return false;
            }
            else if (_localVertexTable.ContainsKey(fromVertexName) &&
                _localVertexTable[fromVertexName].AsyncOutputEndpoints.ContainsKey(fromVertexOutput) &&
                _localVertexTable.ContainsKey(toVertexName) &&
                _localVertexTable[toVertexName].AsyncInputEndpoints.ContainsKey(toVertexInput))
            {
                var fromVertex = _localVertexTable[fromVertexName].AsyncOutputEndpoints[fromVertexOutput] as IAsyncFusableVertexOutputEndpoint;
                var toVertex = _localVertexTable[toVertexName].AsyncInputEndpoints[toVertexInput] as IAsyncVertexInputEndpoint;

                if (fromVertex != null && toVertex != null && fromVertex.CanFuseWith(toVertex, toVertexName, toVertexInput))
                {
                    if (outConnections.TryAdd(fromVertexName + ":" + fromVertexOutput + ":" + toVertexName + ":" + toVertexInput, source))
                    {
                        Task.Run(() => EgressToVertexInput(fromVertexName, fromVertexOutput, toVertexName, toVertexInput, source));
                        return true;
                    }
                    else
                        return false;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }