private void sourcesRegisteredSourceSignalChanged(ISignalSource signal, ISignalSourceRegistered registeredSignal, List <object> recursionChain = null) { if (recursionChain?.Contains(this) == true) { return; } RegisteredSourceSignalChanged?.Invoke(this, registeredSignal, recursionChain.ExtendRecursionChain(this)); }
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(); }
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; }