Пример #1
0
        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();
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        public AppViewModel(ICertifyClient certifyClient)
        {
            _certifyClient = certifyClient;

            Init();
        }
Пример #4
0
 public CertifyCLI()
 {
     _certifyClient = new CertifyServiceClient();
 }
Пример #5
0
 public CertifyCLI()
 {
     _certifyClient = new CertifyServiceClient(new SharedUtils.ServiceConfigManager());
 }
Пример #6
0
        /// <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);
        }
Пример #7
0
 public Certify()
 {
     _client = new global::Certify.Client.CertifyServiceClient();
 }