Exemple #1
0
        public IRelayConnector Connect(IRelayInput input, IRelayOutput output)
        {
            if (input == null || output == null)
            {
                return(null);
            }

            var iKey = input.Name ?? string.Empty;
            var oKey = output.Name ?? string.Empty;

            if (!_inputInitializer.TryGetValue(iKey, out var inputInitializer))
            {
                _inputInitializer.Add(iKey, inputInitializer = new InputInitializer(iKey, input, _queue, RemoveInputInitializer));
            }

            if (!_outputInitializer.TryGetValue(oKey, out var outputInitializer))
            {
                _outputInitializer.Add(oKey, outputInitializer = new OutputInitializer(oKey, output, RemoveOutputInitializer));
            }

            var key = $"{iKey}-{oKey}";

            if (!_connectors.TryGetValue(key, out var connector))
            {
                _connectors.Add(key, connector = new RelayConnector(key, inputInitializer, outputInitializer, _lazyInitializer, RemoveConnector));
            }

            return(connector);
        }
Exemple #2
0
        public IOutputLinks GetOutputLinks(IRelayOutput output)
        {
            if (output == null)
            {
                return(null);
            }

            var oKey = output.Name ?? string.Empty;

            _outputInitializer.TryGetValue(oKey, out var initializer);
            return(initializer);
        }
Exemple #3
0
 public OutputInitializer(string key, IRelayOutput output, Action <OutputInitializer> onDisposed)
 {
     Key         = key;
     Output      = output;
     _onDisposed = onDisposed;
 }