Ejemplo n.º 1
0
 private void sourcesRegisteredSourceSignalChanged(ISignalSource signal, ISignalSourceRegistered registeredSignal, List <object> recursionChain = null)
 {
     if (recursionChain?.Contains(this) == true)
     {
         return;
     }
     RegisteredSourceSignalChanged?.Invoke(this, registeredSignal, recursionChain.ExtendRecursionChain(this));
 }
Ejemplo n.º 2
0
        public AutoPathSearcher(ISignalSourceRegistered source, RouterOutput destination)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }
            if (destination == null)
            {
                throw new ArgumentNullException(nameof(destination));
            }

            Source      = source;
            Destination = destination;

            search();
        }
Ejemplo n.º 3
0
        public virtual void AssignSource(ISignalSource source)
        {
            ISignalSource oldSource = currentSource;

            if (currentSource != null)
            {
                currentSource.RegisteredSourceSignalChanged     -= sourcesRegisteredSourceSignalChanged;
                currentSource.RegisteredSourceSignalNameChanged -= sourcesRegisteredSourceSignalNameChanged;
            }

            currentSource = source;
            if (currentSource != null)
            {
                currentSource.RegisteredSourceSignalChanged     += sourcesRegisteredSourceSignalChanged;
                currentSource.RegisteredSourceSignalNameChanged += sourcesRegisteredSourceSignalNameChanged;
            }

            CurrentSourceChanged?.Invoke(this, source);

            ISignalSourceRegistered currentRegisteredSourceSignal = currentSource?.RegisteredSourceSignal;
            ISignalSourceRegistered oldRegisteredSourceSignal     = oldSource?.RegisteredSourceSignal;

            if (currentRegisteredSourceSignal != oldRegisteredSourceSignal)
            {
                RegisteredSourceSignalChanged?.Invoke(this, currentRegisteredSourceSignal, RecursionChainHelpers.CreateRecursionChain(this));
            }

            string currentRegisteredSourceSignalName = currentRegisteredSourceSignal?.RegisteredSourceSignalName;
            string oldRegisteredSourceSignalName     = oldRegisteredSourceSignal?.RegisteredSourceSignalName;

            if (!string.Equals(currentRegisteredSourceSignalName, oldRegisteredSourceSignalName))
            {
                RegisteredSourceSignalNameChanged?.Invoke(this, currentRegisteredSourceSignalName, RecursionChainHelpers.CreateRecursionChain(this));
            }

            ((BidirectionalPassthroughSignalTally)RedTally).PreviousElement    = source?.RedTally;
            ((BidirectionalPassthroughSignalTally)YellowTally).PreviousElement = source?.YellowTally;
            ((BidirectionalPassthroughSignalTally)GreenTally).PreviousElement  = source?.GreenTally;
        }