internal void AddOutput(int i, ref IEndpointContent endpoint) { if (_outputs != null && _outputEndpointConnectStatus != null && _outputEndpointOperatorIndex != null && _outputEndpointInvertedIndex != null) { _outputs[i] = endpoint; _outputEndpointInvertedIndex.AddOrUpdate(_outputs[i], i, (key, value) => i); UpdateEndpointStatus(_outputEndpointConnectStatus, _outputEndpointOperatorIndex, i, true); if (AreAllEndpointsReady(_outputEndpointConnectStatus, true)) { lock (_applyOutputLock) { if (!_isOutputApplied) { int[] outputIndices = new int[_outputs.Length]; for (int j = 0; j < _outputs.Length; j++) { outputIndices[j] = j; } ApplyOperatorOutput(outputIndices); _isOutputApplied = true; } } } } }
internal override void AddSecondaryInput(int i, ref IEndpointContent endpoint) { if (_secondaryInputs != null && _secondaryInputEndpointConnectStatus != null && _secondaryInputEndpointOperatorIndex != null && _secondaryInputEndpointInvertedIndex != null) { _secondaryInputs[i] = endpoint; _secondaryInputEndpointInvertedIndex.AddOrUpdate(_secondaryInputs[i], i, (key, value) => i); UpdateEndpointStatus(_secondaryInputEndpointConnectStatus, _secondaryInputEndpointOperatorIndex, i, true); if (AreAllEndpointsReady(_secondaryInputEndpointConnectStatus, true)) { lock (_applySecondaryInputsLock) { if (!_isSecondaryInputsApplied) { int[] endpointsIndices = new int[_secondaryInputs.Length]; for (int j = 0; j < _secondaryInputs.Length; j++) { endpointsIndices[j] = j; } ApplyOperatorSecondaryInput(endpointsIndices); _isSecondaryInputsApplied = true; } } } } }
public async void AddOperatorInput(IEndpointContent endpointContent) { if (_isSecondaryInput) { _operator.AddSecondaryInput(_thisId, ref endpointContent); _operator.WaitForSecondaryInputCompletion(_thisId); } else { _operator.AddInput(_thisId, ref endpointContent); _operator.WaitForInputCompletion(_thisId); } }
internal override void AddSecondaryInput(int i, ref IEndpointContent endpoint) { throw new NotImplementedException(); }
internal abstract void AddSecondaryInput(int i, ref IEndpointContent endpoint);