public async Task InitServiceConnections() { //check service connection IsServiceAvailable = await CheckServiceAvailable(); if (!IsServiceAvailable) { Debug.WriteLine("Service not yet available. Waiting a few seconds.."); // the service could still be starting up or port may be reallocated await Task.Delay(5000); // restart client in case port has reallocated CertifyClient = new CertifyServiceClient(); IsServiceAvailable = await CheckServiceAvailable(); if (!IsServiceAvailable) { // give up return; } } // wire up stream events CertifyClient.OnMessageFromService += CertifyClient_SendMessage; CertifyClient.OnRequestProgressStateUpdated += UpdateRequestTrackingProgress; CertifyClient.OnManagedCertificateUpdated += CertifyClient_OnManagedCertificateUpdated; // connect to status api stream & handle events await CertifyClient.ConnectStatusStreamAsync(); }
/// <summary> /// Checks the service availability by fetching the version. If the service is available but the version is wrong an exception will be raised. /// </summary> /// <returns></returns> public async Task <bool> CheckServiceAvailable(ICertifyClient client) { string version = null; try { version = await client.GetAppVersion(); IsServiceAvailable = true; } catch (Exception exp) { System.Diagnostics.Debug.WriteLine(exp); //service not available IsServiceAvailable = false; } if (version != null) { // ensure service is correct version var v = Version.Parse(version.Replace("\"", "")); var assemblyVersion = typeof(ServiceConfig).Assembly.GetName().Version; if (v.Major != assemblyVersion.Major) { throw new Exception($"Mismatched service version ({v}). Please ensure the old version of the app has been fully uninstalled, then re-install the latest version."); } else { return(IsServiceAvailable); } } else { return(IsServiceAvailable); } }
public AppViewModel(ICertifyClient certifyClient) { _certifyClient = certifyClient; Init(); }
public CertifyCLI() { _certifyClient = new CertifyServiceClient(); }
public CertifyCLI() { _certifyClient = new CertifyServiceClient(new SharedUtils.ServiceConfigManager()); }
/// <summary> /// Attempt connection to the given service, or default if none supplied. /// </summary> /// <param name="conn">If null, default will be used</param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task <bool> InitServiceConnections(ServerConnection conn, CancellationToken cancellationToken) { //check service connection IsServiceAvailable = false; ConnectionState = "Connecting..."; if (conn == null) { // check default connection IsServiceAvailable = await CheckServiceAvailable(_certifyClient); } var maxAttempts = 3; var attemptsRemaining = maxAttempts; ICertifyClient clientConnection = _certifyClient; while (!IsServiceAvailable && attemptsRemaining > 0 && cancellationToken.IsCancellationRequested != true) { var connectionConfig = conn ?? GetDefaultServerConnection(_configManager); Debug.WriteLine("Service not yet available. Waiting a few seconds.."); if (attemptsRemaining != maxAttempts) { // the service could still be starting up or port may be reallocated var waitMS = (maxAttempts - attemptsRemaining) * 1000; await Task.Delay(waitMS, cancellationToken); } if (!cancellationToken.IsCancellationRequested) { // restart client in case port has reallocated clientConnection = new CertifyServiceClient(_configManager, connectionConfig); IsServiceAvailable = await CheckServiceAvailable(clientConnection); if (!IsServiceAvailable) { attemptsRemaining--; // give up if (attemptsRemaining == 0) { ConnectionState = IsServiceAvailable ? "Connected" : "Not Connected"; return(false); } } } } if (cancellationToken.IsCancellationRequested == true) { ConnectionState = IsServiceAvailable ? "Connected" : "Not Connected"; return(false); } // wire up stream events clientConnection.OnMessageFromService += CertifyClient_SendMessage; clientConnection.OnRequestProgressStateUpdated += UpdateRequestTrackingProgress; clientConnection.OnManagedCertificateUpdated += CertifyClient_OnManagedCertificateUpdated; // connect to status api stream & handle events try { await clientConnection.ConnectStatusStreamAsync(); } catch (Exception exp) { // failed to connect to status signalr hub Log?.Error($"Failed to connect to status hub: {exp}"); ConnectionState = IsServiceAvailable ? "Connected" : "Not Connected"; return(false); } // replace active connection _certifyClient = clientConnection; ConnectionState = IsServiceAvailable ? "Connected" : "Not Connected"; return(true); }
public Certify() { _client = new global::Certify.Client.CertifyServiceClient(); }