/// <summary> /// Determines whether the network is available. /// </summary> /// <returns>Returns true if the network is available.</returns> public bool IsAvailable() { try { //var restClient = ApplicationContext.Current.GetRestClient("hdsi"); var networkInformationService = ApplicationContext.Current.GetService <INetworkInformationService>(); if (networkInformationService.IsNetworkAvailable) { if (this.m_lastPing < DateTime.Now.AddSeconds(-30)) { HdsiServiceClient client = this.GetServiceClient(); //new HdsiServiceClient(restClient); client.Client.Credentials = new NullCredentials(); client.Client.Description.Endpoint[0].Timeout = 5000; this.m_lastPing = DateTime.Now; return(this.IsValidVersion(client) && client.Ping()); } return(true); } return(false); } catch (Exception e) { this.m_tracer.TraceInfo($"Unable to determine network state: {e}"); return(false); } }
/// <summary> /// Get the difference between the server and this device's time /// </summary> public TimeSpan GetServerTimeDrift() { try { //var restClient = ApplicationContext.Current.GetRestClient("hdsi"); var networkInformationService = ApplicationContext.Current.GetService <INetworkInformationService>(); if (networkInformationService.IsNetworkAvailable) { HdsiServiceClient client = this.GetServiceClient(); //new HdsiServiceClient(restClient); client.Client.Credentials = new NullCredentials(); client.Client.Description.Endpoint[0].Timeout = 20000; var drift = TimeSpan.Zero; client.Client.Responded += (o, e) => { if (e.Headers != null) { if (e.Headers.ContainsKey("X-GeneratedOn")) { drift = DateTime.Parse(e.Headers["X-GeneratedOn"]).Subtract(DateTime.Now); } else if (DateTime.TryParse(e.Headers["Date"], out var serverTime)) { drift = serverTime.Subtract(DateTime.Now); } } }; client.Ping(); return(drift); } return(TimeSpan.Zero); } catch (Exception e) { this.m_tracer.TraceError($"Unable to determine server time drift: {e}"); return(TimeSpan.Zero); } }