Пример #1
0
        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;
                        }
                    }
                }
            }
        }
Пример #2
0
        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;
                        }
                    }
                }
            }
        }
Пример #3
0
 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);
     }
 }
Пример #4
0
 internal override void AddSecondaryInput(int i, ref IEndpointContent endpoint)
 {
     throw new NotImplementedException();
 }
Пример #5
0
 internal abstract void AddSecondaryInput(int i, ref IEndpointContent endpoint);