diff --git a/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber.BL/SynchController.cs b/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber.BL/SynchController.cs index 4d030d34..59760ea8 100644 --- a/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber.BL/SynchController.cs +++ b/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber.BL/SynchController.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using System.Configuration; using System.Diagnostics; using System.IO; using System.Linq; @@ -40,6 +41,9 @@ public void InitTransactionsSummary() public TransactionSummary TransactionsSummary; + private static int _timeout = -1; + private int timeout { get { return _timeout == -1 ? GetTimeout() : _timeout; } } + public IBindingList GetCapabilitiesProviderDataset(string url, string UserName, string Password) { var cdb = new CapabilitiesDataBuilder(url, UserName, Password); @@ -563,19 +567,12 @@ private void GetStatusForChangelogOnProvider(int datasetId, string changeLogId) { var changeLogStatus = GetChangelogStatusResponse(datasetId, changeLogId); - var starttid = DateTime.Now; - var elapsedTicks = DateTime.Now.Ticks - starttid.Ticks; - - var elapsedSpan = new TimeSpan(elapsedTicks); - var timeout = 15; - //timeout = 50; // TODO: Fix for Norkart Provider, + var stopWatch = Stopwatch.StartNew(); while ((changeLogStatus == ChangelogStatusType.queued || changeLogStatus == ChangelogStatusType.working) && - elapsedSpan.Minutes < timeout) + stopWatch.Elapsed.TotalMinutes < timeout) { System.Threading.Thread.Sleep(3000); - elapsedTicks = DateTime.Now.Ticks - starttid.Ticks; - elapsedSpan = new TimeSpan(elapsedTicks); changeLogStatus = GetChangelogStatusResponse(datasetId, changeLogId); } if (changeLogStatus == ChangelogStatusType.finished) @@ -594,7 +591,7 @@ private void GetStatusForChangelogOnProvider(int datasetId, string changeLogId) throw new IOException("Recieved ChangelogStatus == failed from provider"); default: Logger.Info("Timeout"); - throw new IOException("Timed out waiting for ChangelogStatus == finished from provider"); + throw new TimeoutException($"Timed out waiting for ChangelogStatus == finished from provider. Try increasing the TimeOut-value in the .config-file. Current value: {timeout} minutes"); } } } @@ -607,6 +604,18 @@ private void GetStatusForChangelogOnProvider(int datasetId, string changeLogId) } } + private static int GetTimeout() + { + var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); + + var settings = config.GetSectionGroup("userSettings"); + var section = settings.Sections["Kartverket.Geosynkronisering.Subscriber.Properties.Subscriber"] as ClientSettingsSection; + + _timeout = int.Parse(section.Settings.Get("TimeOut").Value.ValueXml.InnerText); + + return _timeout; + } + private static List ChangeLogMapper(IEnumerable fileList, int datasetId) { var newFileList = new List(); diff --git a/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber/App.config b/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber/App.config index 96e40a71..d62ca91e 100644 --- a/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber/App.config +++ b/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber/App.config @@ -32,7 +32,8 @@ For nlog use TEMP folder, one file for error, one for logging. - + + @@ -41,9 +42,15 @@ + + 1 + https://geosynk.nois.no/tilbyder/ + + 15 + @@ -84,6 +91,8 @@ - + + + \ No newline at end of file diff --git a/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber/Properties/Subscriber.Designer.cs b/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber/Properties/Subscriber.Designer.cs index 59bfb698..85eb867f 100644 --- a/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber/Properties/Subscriber.Designer.cs +++ b/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber/Properties/Subscriber.Designer.cs @@ -12,7 +12,7 @@ namespace Kartverket.Geosynkronisering.Subscriber.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.0.0")] internal sealed partial class Subscriber : global::System.Configuration.ApplicationSettingsBase { private static Subscriber defaultInstance = ((Subscriber)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Subscriber()))); @@ -46,5 +46,17 @@ internal sealed partial class Subscriber : global::System.Configuration.Applicat this["DefaultServerURL"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("15")] + public int TimeOut { + get { + return ((int)(this["TimeOut"])); + } + set { + this["TimeOut"] = value; + } + } } } diff --git a/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber/Properties/Subscriber.settings b/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber/Properties/Subscriber.settings index 16f80884..d5f8e69a 100644 --- a/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber/Properties/Subscriber.settings +++ b/Kartverket.Geosynkronisering.Subscriber/Kartverket.Geosynkronisering.Subscriber/Properties/Subscriber.settings @@ -8,5 +8,8 @@ https://geosynk.nois.no/tilbyder/ + + 15 + \ No newline at end of file diff --git a/Kartverket.Geosynkronisering.Subscriber/Test_Subscriber_NetCore/App.config b/Kartverket.Geosynkronisering.Subscriber/Test_Subscriber_NetCore/App.config index ab439b33..bcc7dede 100644 --- a/Kartverket.Geosynkronisering.Subscriber/Test_Subscriber_NetCore/App.config +++ b/Kartverket.Geosynkronisering.Subscriber/Test_Subscriber_NetCore/App.config @@ -17,6 +17,9 @@ https://geosynk.nois.no/tilbyder/ + + 15 +