public void CanCreate()
        {
            //TODO not a great test, just scratches the surface
            var settings = new ConfigSettings();

            const string file = @"c:\windows\win.ini";
            var          configFileWatcher = new ConfigFileWatcher(settings, file);

            configFileWatcher.Start();
            configFileWatcher.FileSystemWatcher.Filter.ShouldBe("win.ini");
        }
Ejemplo n.º 2
0
        public static T GetConfig <T>(string fileName, T defVal)
        {
            object instance     = null;
            string fileFullName = GetConfigFileFullName(fileName);

            if (ConfigCache.TryGetValue(fileFullName, out instance))
            {
                return((T)instance);
            }
            lock (Locker)
            {
                if (ConfigCache.TryGetValue(fileFullName, out instance))
                {
                    return((T)instance);
                }
                if (!File.Exists(fileFullName))
                {
                    TryCreateConfig(fileName, defVal);
                    return(defVal);
                }
                XmlDocument doc = new XmlDocument();
                try
                {
                    doc.Load(fileFullName);
                }
                catch (Exception ex)
                {
                    string errMsg = string.Format("加载配置文件 {0} 失败!使用默认配置文件!,异常信息:{1}", fileFullName, ex);
                    YmatouLoggingService.Error(errMsg);
                    return(defVal);
                }
                ConfigFileWatcher configFileWatcher = null;
                if (!ConfigFileWatcherCache.TryGetValue(fileFullName, out configFileWatcher))
                {
                    ConfigFileWatcherCache.Add(fileFullName, new ConfigFileWatcher(fileFullName, OnConfigChanged));
                }
                XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
                using (StringReader sr = new StringReader(doc.OuterXml))
                {
                    try
                    {
                        instance = (T)xmlSerializer.Deserialize(sr);
                        ConfigCache.Add(fileFullName, instance);
                        return((T)instance);
                    }
                    catch (Exception ex)
                    {
                        YmatouLoggingService.Debug("反序列化异常,类型名称:{0},异常信息:{1}", typeof(T).Name, ex.ToString());
                        return(defVal);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public ServiceWorker(IKernel kernel)
        {
            _logger               = kernel.Get <ILogger>();
            _scheduler            = kernel.Get <IScheduler>();
            _scheduler.JobFactory = kernel.Get <IJobFactory>();
            _watcher              = new ConfigFileWatcher(_logger);

            _logger.Info("Scheduler service worker was initialized");

            AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
            {
                _logger.Error("FirstChanceException:" + eventArgs.Exception.ToString());
            };
        }