/// <inheritdoc /> /// <summary> /// Routes the specified signal from an extension to another extension. /// </summary> /// <param name="signal">The signal.</param> /// <returns></returns> /// <exception cref="T:Loki.SignalServer.Interfaces.Exceptions.DependencyNotInitException">SignalRouter</exception> public ISignal RouteExtension(ISignal signal) { if (!_isInitialized) { throw new DependencyNotInitException(nameof(SignalRouter)); } IExtension extension = GetExtension(signal); if (extension == null) { throw new InvalidExtensionException($"Attempted to route an to an invalid extension. Route: {signal.Route}"); } _logger.Debug(signal.Format("Cross Request")); ISignal response = extension.ExecuteCrossExtensionAction(signal.Action, signal); if (response == null) { return(null); } _logger.Debug(signal.Format("Cross Response")); return(response); }