public static async Task <int> runIpcServerTcpClientRouter(CancellationToken token, string ipcServer, string tcpClient, int runtimeTimeoutMs, TcpClientRouterFactory.CreateInstanceDelegate tcpClientRouterFactory, ILogger logger, Callbacks callbacks) { return(await runRouter(token, new IpcServerTcpClientRouterFactory(ipcServer, tcpClient, runtimeTimeoutMs, tcpClientRouterFactory, logger), callbacks).ConfigureAwait(false)); }
public async Task <int> RunIpcServerTcpClientRouter(CancellationToken token, string ipcServer, string tcpClient, int runtimeTimeout, string verbose, string forwardPort) { using CancellationTokenSource cancelRouterTask = new CancellationTokenSource(); using CancellationTokenSource linkedCancelToken = CancellationTokenSource.CreateLinkedTokenSource(token, cancelRouterTask.Token); LogLevel logLevel = LogLevel.Information; if (string.Compare(verbose, "debug", StringComparison.OrdinalIgnoreCase) == 0) { logLevel = LogLevel.Debug; } else if (string.Compare(verbose, "trace", StringComparison.OrdinalIgnoreCase) == 0) { logLevel = LogLevel.Trace; } using var factory = new LoggerFactory(); factory.AddConsole(logLevel, false); Launcher.SuspendProcess = false; Launcher.ConnectMode = false; Launcher.Verbose = logLevel != LogLevel.Information; Launcher.CommandToken = token; var logger = factory.CreateLogger("dotnet-dsrouter"); TcpClientRouterFactory.CreateInstanceDelegate tcpClientRouterFactory = TcpClientRouterFactory.CreateDefaultInstance; if (!string.IsNullOrEmpty(forwardPort)) { if (string.Compare(forwardPort, "android", StringComparison.OrdinalIgnoreCase) == 0) { tcpClientRouterFactory = ADBTcpClientRouterFactory.CreateADBInstance; } else if (string.Compare(forwardPort, "ios", StringComparison.OrdinalIgnoreCase) == 0) { tcpClientRouterFactory = USBMuxTcpClientRouterFactory.CreateUSBMuxInstance; } else { logger.LogError($"Unknown port forwarding argument, {forwardPort}. Ignoring --forward-port argument."); } } var routerTask = DiagnosticsServerRouterRunner.runIpcServerTcpClientRouter(linkedCancelToken.Token, ipcServer, tcpClient, runtimeTimeout == Timeout.Infinite ? runtimeTimeout : runtimeTimeout * 1000, tcpClientRouterFactory, logger, Launcher); while (!linkedCancelToken.IsCancellationRequested) { await Task.WhenAny(routerTask, Task.Delay(250)).ConfigureAwait(false); if (routerTask.IsCompleted) { break; } if (!Console.IsInputRedirected && Console.KeyAvailable) { ConsoleKey cmd = Console.ReadKey(true).Key; if (cmd == ConsoleKey.Q) { cancelRouterTask.Cancel(); break; } } } return(routerTask.Result); }
public IpcServerTcpClientRouterFactory(string ipcServer, string tcpClient, int runtimeTimeoutMs, TcpClientRouterFactory.CreateInstanceDelegate factory, ILogger logger) { _logger = logger; _ipcServerRouterFactory = new IpcServerRouterFactory(ipcServer, logger); _tcpClientRouterFactory = factory(tcpClient, runtimeTimeoutMs, logger); }