/// <summary> /// Requests a new session and asserts. /// </summary> /// <param name="retries">The number of retries.</param> /// <returns>The <see cref="OpenSession" /> message args.</returns> protected async Task <ProtocolEventArgs <OpenSession> > RequestSessionAndAssert(int retries = 10) { try { var client = _client; // Register event handler for OpenSession response var onOpenSession = HandleAsync <OpenSession>( x => client.Handler <ICoreClient>().OnOpenSession += x); // Wait for Open connection var isOpen = await _client.OpenAsyncWithTimeout(); Assert.IsTrue(isOpen); // Wait for OpenSession var openArgs = await onOpenSession; // Verify OpenSession and Supported Protocols VerifySessionWithProtcols(openArgs, Protocols.ChannelStreaming, Protocols.Discovery, Protocols.Store); return(openArgs); } catch (TimeoutException) { if (retries < 1) { throw; } await Task.Delay(TestSettings.DefaultTimeoutInMilliseconds); Logger.Warn("Retrying connection attempt after timeout"); if (retries == 1) { _client?.Dispose(); _client = InitClient(CreateClient(TestSettings.FallbackServerUrl)); } else { EtpSetUp(_container); _server.Start(); } return(await RequestSessionAndAssert(retries - 1)); } }
private void HandleWebServer(IEtpSelfHostedWebServer webServer) { while (true) { Console.WriteLine("Select from the following options:"); Console.WriteLine(" S - Start / Stop"); if (webServer.ServerManager.IsEtpVersionSupported(EtpVersion.v12)) { Console.WriteLine(" P - Ping all connected clients"); } foreach (var handler in Handlers) { handler.PrintConsoleOptions(); } Console.WriteLine(" Z - Clear"); Console.WriteLine(" X - Exit"); Console.WriteLine(); var info = Console.ReadKey(); Console.WriteLine(" - processing..."); Console.WriteLine(); if (IsKey(info, "S")) { if (webServer.IsRunning) { webServer.Stop(); } else { webServer.Start(); } } else if (IsKey(info, "P")) { foreach (var server in webServer.ServerManager.Servers.Values) { if (server.EtpVersion == EtpVersion.v12) { server.Ping(); } } } else if (IsKey(info, "Z")) { Console.Clear(); } else if (IsKey(info, "X")) { break; } else { foreach (var handler in Handlers) { if (handler.HandleConsoleInput(info)) { break; } } } } }