Some timeout issues
[pithos-ms-client] / trunk / Pithos.Client.WPF / Configuration / PithosSettings.cs
index bcf1f25..2036ac8 100644 (file)
-#region
-/* -----------------------------------------------------------------------
- * <copyright file="PithosSettings.cs" company="GRNet">
- * 
- * Copyright 2011-2012 GRNET S.A. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- *   1. Redistributions of source code must retain the above
- *      copyright notice, this list of conditions and the following
- *      disclaimer.
- *
- *   2. Redistributions in binary form must reproduce the above
- *      copyright notice, this list of conditions and the following
- *      disclaimer in the documentation and/or other materials
- *      provided with the distribution.
- *
- *
- * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and
- * documentation are those of the authors and should not be
- * interpreted as representing official policies, either expressed
- * or implied, of GRNET S.A.
- * </copyright>
- * -----------------------------------------------------------------------
- */
-#endregion
-using System.ComponentModel.Composition;
-using System.Diagnostics;
-using System.IO;
-using System.Linq;
-using Pithos.Client.WPF.Properties;
-using Pithos.Interfaces;
-using log4net.Appender;
-using log4net.Core;
-using log4net.Repository.Hierarchy;
-
-namespace Pithos.Client.WPF.Configuration
-{
-    using System;
-
-    [Export(typeof(IPithosSettings))]
-    [Export]
-    public class PithosSettings :  IPithosSettings
-    {
-        private readonly Settings _settings = Settings.Default;
-
-        public PithosSettings()
-        {
-            //Settings should already be upgraded by the time we reach this point
-            Debug.Assert(!_settings.MustUpgrade);
-            //_settings.Upgrade();
-        }
-
-        public bool UseDefaultProxy
-        {
-            get { return _settings.UseDefaultProxy; }
-            set { _settings.UseDefaultProxy = value; }
-        }
-
-        public bool UseManualProxy
-        {
-            get { return _settings.UseManualProxy; }
-            set { _settings.UseManualProxy = value; }
-        }
-
-        public bool UseNoProxy
-        {
-            get { return _settings.UseNoProxy; }
-            set { _settings.UseNoProxy = value; }
-        }
-
-        public string PithosPath
-        {
-            get { return _settings.PithosPath; }
-            set { _settings.PithosPath = value; }
-        }
-
-      /*  public string PithosSite
-        {
-            get { return _settings.PithosSite; }
-        }*/
-
-        public string PithosLoginUrl
-        {
-            get { return _settings.PithosLoginUrl; }
-        }
-
-        public string IconsPath
-        {
-            get { return _settings.IconPath; }
-            set { _settings.IconPath = value; }
-        }
-
-        public string UserName
-        {
-            get { return _settings.UserName; }
-            set { _settings.UserName = value; }
-        }
-
-        public string ApiKey
-        {
-            get { return _settings.ApiKey; }
-            set { _settings.ApiKey = value; }
-        }
-
-        public AccountsCollection Accounts
-        {
-            get { return _settings.Accounts ?? (_settings.Accounts = new AccountsCollection()); }
-            set { _settings.Accounts = value; }
-        }
-
-        public string ProxyServer
-        {
-            get { return _settings.ProxyServer; }
-            set { _settings.ProxyServer = value; }
-        }
-
-        public int ProxyPort
-        {
-            get { return _settings.ProxyPort; }
-            set { _settings.ProxyPort = value; }
-        }
-
-        public string ProxyUsername
-        {
-            get { return _settings.ProxyUsername; }
-            set { _settings.ProxyUsername = value; }
-        }
-
-
-        public string ProxyPassword
-        {
-            get { return _settings.ProxyPassword; }
-            set { _settings.ProxyPassword = value; }
-        }
-
-        public string ProxyDomain
-        {
-            get { return _settings.ProxyDomain; }
-            set { _settings.ProxyDomain = value; }
-        }
-
-        public bool ProxyAuthentication
-        {
-
-            get { return _settings.ProxyAuthentication; }
-            set { _settings.ProxyAuthentication = value; }
-        }
-
-        
-        
-        public bool ExtensionsActivated
-        {
-
-            get { return _settings.ExtensionsActivated; }
-            set { _settings.ExtensionsActivated = value; }
-        }
-
-        public bool ShowDesktopNotifications
-        {
-            get { return _settings.ShowDesktopNotifications; }
-            set { _settings.ShowDesktopNotifications = value; }
-        }
-
-
-        public int PollingInterval
-        {
-            get { return _settings.PollingInterval; }
-            set
-            {
-                if (value <= 0)
-                    throw new ArgumentOutOfRangeException();
-                _settings.PollingInterval = value;
-            }
-        }
-
-        public TimeSpan StartupDelay
-        {
-            get { return _settings.StartupDelay; }
-            set
-            {
-                if (value < TimeSpan.Zero)
-                    throw new ArgumentOutOfRangeException();
-                _settings.StartupDelay = value;
-            }
-        }
-
-
-        public bool StartOnSystemStartup
-        {
-            get { return _settings.StartOnSystemStartup; }
-            set
-            {
-                _settings.StartOnSystemStartup = value;
-            }
-        }
-
-        public byte HashingParallelism
-        {
-            get { return _settings.HashingParallelism; }
-            set { _settings.HashingParallelism = value; }
-        }
-
-        public string UpdateUrl
-        {
-            get { return _settings.UpdateUrl; }
-        }
-
-        public bool UpdateDiagnostics
-        {
-            get { return _settings.UpdateDiagnostics; }
-        }
-
-        public TimeSpan UpdateCheckInterval
-        {
-            get { return _settings.UpdateCheckInterval; }
-        }
-
-        public TimeSpan FileIdleTimeout
-        {
-            get { return _settings.FileIdleTimeout; }
-        }
-
-        public bool UpdateForceCheck
-        {
-            get { return _settings.UpdateForceCheck; }
-        }
-
-        public bool DebugLoggingEnabled
-        {
-            get { return _settings.DebugLoggingEnabled; }
-            set
-            {
-                _settings.DebugLoggingEnabled = value;
-
-                SetDebugLevel();
-            }
-        }
-
-        private static void SetDebugLevel()
-        {
-            var loggerRepository = (Hierarchy) log4net.LogManager.GetRepository();
-
-            var appenders = loggerRepository.GetAppenders();
-
-            var debugAppender = appenders.OfType<RollingFileAppender>()
-                .FirstOrDefault(a => a.Name == "DebugFileAppender");
-            if (debugAppender != null)
-            {
-                var pithosDataPath = PithosDataPath;
-                debugAppender.File = Path.Combine(pithosDataPath, "debuglog.xml");
-                debugAppender.Threshold = !Settings.Default.DebugLoggingEnabled ? Level.Off : Level.All;
-                debugAppender.ActivateOptions();
-            }
-        }
-
-        public static string PithosDataPath
-        {
-            get
-            {
-                var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
-                var pithosDataPath = Path.Combine(appDataPath, "GRNET\\PITHOS");
-                return pithosDataPath;
-            }
-        }
-
-        public void Save()
-        {
-            _settings.Save();
-            Proxy.SetFromSettings(this);
-        }
-
-        public void Reload()
-        {
-            _settings.Reload();
-        }
-
-        public void Reset()
-        {
-            _settings.Reset();
-            _settings.Save();
-        }
-    }
-}
+#region\r
+/* -----------------------------------------------------------------------\r
+ * <copyright file="PithosSettings.cs" company="GRNet">\r
+ * \r
+ * Copyright 2011-2012 GRNET S.A. All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or\r
+ * without modification, are permitted provided that the following\r
+ * conditions are met:\r
+ *\r
+ *   1. Redistributions of source code must retain the above\r
+ *      copyright notice, this list of conditions and the following\r
+ *      disclaimer.\r
+ *\r
+ *   2. Redistributions in binary form must reproduce the above\r
+ *      copyright notice, this list of conditions and the following\r
+ *      disclaimer in the documentation and/or other materials\r
+ *      provided with the distribution.\r
+ *\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS\r
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR\r
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF\r
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * The views and conclusions contained in the software and\r
+ * documentation are those of the authors and should not be\r
+ * interpreted as representing official policies, either expressed\r
+ * or implied, of GRNET S.A.\r
+ * </copyright>\r
+ * -----------------------------------------------------------------------\r
+ */\r
+#endregion\r
+using System.ComponentModel.Composition;\r
+using System.Diagnostics;\r
+using System.IO;\r
+using System.Linq;\r
+using Pithos.Client.WPF.Properties;\r
+using Pithos.Interfaces;\r
+using log4net.Appender;\r
+using log4net.Core;\r
+using log4net.Repository.Hierarchy;\r
+\r
+namespace Pithos.Client.WPF.Configuration\r
+{\r
+    using System;\r
+\r
+    [Export(typeof(IPithosSettings))]\r
+    [Export]\r
+    public class PithosSettings :  IPithosSettings\r
+    {\r
+        private readonly Settings _settings = Settings.Default;\r
+\r
+        public PithosSettings()\r
+        {\r
+            //Settings should already be upgraded by the time we reach this point\r
+            Debug.Assert(!_settings.MustUpgrade);\r
+            //_settings.Upgrade();\r
+        }\r
+\r
+        public bool UseDefaultProxy\r
+        {\r
+            get { return _settings.UseDefaultProxy; }\r
+            set { _settings.UseDefaultProxy = value; }\r
+        }\r
+\r
+        public bool UseManualProxy\r
+        {\r
+            get { return _settings.UseManualProxy; }\r
+            set { _settings.UseManualProxy = value; }\r
+        }\r
+\r
+        public bool UseNoProxy\r
+        {\r
+            get { return _settings.UseNoProxy; }\r
+            set { _settings.UseNoProxy = value; }\r
+        }\r
+\r
+        public string PithosPath\r
+        {\r
+            get { return _settings.PithosPath; }\r
+            set { _settings.PithosPath = value; }\r
+        }\r
+\r
+      /*  public string PithosSite\r
+        {\r
+            get { return _settings.PithosSite; }\r
+        }*/\r
+\r
+\r
+        public string IconsPath\r
+        {\r
+            get { return _settings.IconPath; }\r
+            set { _settings.IconPath = value; }\r
+        }\r
+\r
+        public string UserName\r
+        {\r
+            get { return _settings.UserName; }\r
+            set { _settings.UserName = value; }\r
+        }\r
+\r
+        public string ApiKey\r
+        {\r
+            get { return _settings.ApiKey; }\r
+            set { _settings.ApiKey = value; }\r
+        }\r
+\r
+        public AccountsCollection Accounts\r
+        {\r
+            get { return _settings.Accounts ?? (_settings.Accounts = new AccountsCollection()); }\r
+            set { _settings.Accounts = value; }\r
+        }\r
+\r
+        public string ProxyServer\r
+        {\r
+            get { return _settings.ProxyServer; }\r
+            set { _settings.ProxyServer = value; }\r
+        }\r
+\r
+        public int ProxyPort\r
+        {\r
+            get { return _settings.ProxyPort; }\r
+            set { _settings.ProxyPort = value; }\r
+        }\r
+\r
+        public string ProxyUsername\r
+        {\r
+            get { return _settings.ProxyUsername; }\r
+            set { _settings.ProxyUsername = value; }\r
+        }\r
+\r
+\r
+        public string ProxyPassword\r
+        {\r
+            get { return _settings.ProxyPassword; }\r
+            set { _settings.ProxyPassword = value; }\r
+        }\r
+\r
+        public string ProxyDomain\r
+        {\r
+            get { return _settings.ProxyDomain; }\r
+            set { _settings.ProxyDomain = value; }\r
+        }\r
+\r
+        public bool ProxyAuthentication\r
+        {\r
+\r
+            get { return _settings.ProxyAuthentication; }\r
+            set { _settings.ProxyAuthentication = value; }\r
+        }\r
+\r
+        \r
+        \r
+        public bool ExtensionsActivated\r
+        {\r
+\r
+            get { return _settings.ExtensionsActivated; }\r
+            set { _settings.ExtensionsActivated = value; }\r
+        }\r
+\r
+        public bool ShowDesktopNotifications\r
+        {\r
+            get { return _settings.ShowDesktopNotifications; }\r
+            set { _settings.ShowDesktopNotifications = value; }\r
+        }\r
+\r
+\r
+        public int PollingInterval\r
+        {\r
+            get { return _settings.PollingInterval; }\r
+            set\r
+            {\r
+                if (value <= 0)\r
+                    throw new ArgumentOutOfRangeException();\r
+                _settings.PollingInterval = value;\r
+            }\r
+        }\r
+\r
+        public TimeSpan StartupDelay\r
+        {\r
+            get { return _settings.StartupDelay; }\r
+            set\r
+            {\r
+                if (value < TimeSpan.Zero)\r
+                    throw new ArgumentOutOfRangeException();\r
+                _settings.StartupDelay = value;\r
+            }\r
+        }\r
+\r
+\r
+        public bool StartOnSystemStartup\r
+        {\r
+            get { return _settings.StartOnSystemStartup; }\r
+            set\r
+            {\r
+                _settings.StartOnSystemStartup = value;\r
+            }\r
+        }\r
+\r
+        public byte HashingParallelism\r
+        {\r
+            get { return _settings.HashingParallelism; }\r
+            set { _settings.HashingParallelism = value; }\r
+        }\r
+\r
+        public string UpdateUrl\r
+        {\r
+            get { return _settings.UpdateUrl; }\r
+        }\r
+\r
+        public bool UpdateDiagnostics\r
+        {\r
+            get { return _settings.UpdateDiagnostics; }\r
+        }\r
+\r
+        public TimeSpan UpdateCheckInterval\r
+        {\r
+            get { return _settings.UpdateCheckInterval; }\r
+        }\r
+\r
+        public TimeSpan FileIdleTimeout\r
+        {\r
+            get { return _settings.FileIdleTimeout; }\r
+        }\r
+\r
+        public bool UpdateForceCheck\r
+        {\r
+            get { return _settings.UpdateForceCheck; }\r
+        }\r
+\r
+        public bool DebugLoggingEnabled\r
+        {\r
+            get { return _settings.DebugLoggingEnabled; }\r
+            set\r
+            {\r
+                _settings.DebugLoggingEnabled = value;\r
+\r
+                SetDebugLevel();\r
+            }\r
+        }\r
+\r
+        public bool IgnoreCertificateErrors\r
+        {\r
+            get { return _settings.IgnoreCertificateErrors; }\r
+            set\r
+            {\r
+                _settings.IgnoreCertificateErrors = value;\r
+\r
+            }\r
+        }\r
+\r
+        private static void SetDebugLevel()\r
+        {\r
+            var loggerRepository = (Hierarchy) log4net.LogManager.GetRepository();\r
+\r
+            var appenders = loggerRepository.GetAppenders();\r
+\r
+            var debugAppender = appenders.OfType<RollingFileAppender>()\r
+                .FirstOrDefault(a => a.Name == "DebugFileAppender");\r
+            if (debugAppender != null)\r
+            {\r
+                var pithosDataPath = PithosDataPath;\r
+                debugAppender.File = Path.Combine(pithosDataPath, "debuglog.xml");\r
+                debugAppender.Threshold = !Settings.Default.DebugLoggingEnabled ? Level.Off : Level.All;\r
+                debugAppender.ActivateOptions();\r
+            }\r
+        }\r
+\r
+        public static string PithosDataPath\r
+        {\r
+            get\r
+            {\r
+                var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);\r
+                var pithosDataPath = Path.Combine(appDataPath, "GRNET\\PITHOS");\r
+                return pithosDataPath;\r
+            }\r
+        }\r
+\r
+        public void Save()\r
+        {\r
+            LockedSave();\r
+            Proxy.SetFromSettings(this);\r
+        }\r
+\r
+        private void LockedSave()\r
+        {\r
+            lock (this)\r
+            {\r
+                _settings.Save();\r
+            }\r
+        }\r
+\r
+        public void Reload()\r
+        {\r
+            _settings.Reload();\r
+        }\r
+\r
+        public void Reset()\r
+        {\r
+            _settings.Reset();\r
+            LockedSave();\r
+        }\r
+    }\r
+}\r