/// <summary> /// /// </summary> /// <param name="share"></param> /// <param name="fileInfo"></param> /// <param name="keyValueFinder"></param> public JsonConfigurationBuilder(IEnumerable <ShareConfigurationBuilder> share, ConfigFileInfo fileInfo, ICustomKeyValueFinder keyValueFinder) { this.share = share; this.File = fileInfo; this.Name = this.File.File.Name.Replace(this.File.File.Extension, "").Trim(new[] { ' ', '.' }); this.usingShareInfo = new List <ShareFileInfo>(); this.keyValueFinder = keyValueFinder; }
/// <summary> /// /// </summary> public ConfigurationWatcher(IEnumerable <ShareConfigurationBuilder> shareConfiguration, IEnumerable <IShareFileReference> appConfiguration, ICustomKeyValueFinder keyValueFinder, TimeSpan sleepTimeSpan) : base(null, typeof(ConfigurationWatcher).Name) { this.shareConfiguration = shareConfiguration == null ? new List <ShareConfigurationBuilder>() : shareConfiguration.ToList(); this.appConfiguration = appConfiguration == null ? new List <IShareFileReference>() : appConfiguration.ToList(); this.keyValueFinder = keyValueFinder; this.sleepTimeSpan = sleepTimeSpan; this.appUniqueName = new List <string>(); this.encodings = new Dictionary <string, Encoding>(); this.moreTimeLimit = new Dictionary <string, DateTime>(); this.changeQueue = new System.Collections.Concurrent.ConcurrentQueue <ChangeQueue>(); this.fileWather = new Dictionary <string, FileSystemWatcher>(StringComparer.OrdinalIgnoreCase); if (shareConfiguration != null) { foreach (var share in shareConfiguration) { if (this.fileWather.ContainsKey(share.File.FullName) == false) { this.encodings[share.File.FullName] = share.Encoding; var watcher = new Never.IO.FileWatcher(share.File) { EnableRaisingEvents = true }; this.fileWather.Add(share.File.FullName, watcher); this.moreTimeLimit.Add(share.File.FullName, DateTime.Now); watcher.Created += ShareWatcher_Created; watcher.Changed += ShareWatcher_Changed; watcher.Deleted += ShareWatcher_Deleted; watcher.Renamed += ShareWatcher_Renamed; } } } if (appConfiguration != null) { foreach (var config in appConfiguration) { if (this.fileWather.ContainsKey(config.Builder.File.File.FullName) == false) { this.encodings[config.Builder.File.File.FullName] = config.Builder.File.Encoding; var watcher = new Never.IO.FileWatcher(config.Builder.File.File) { EnableRaisingEvents = true }; this.fileWather.Add(config.Builder.File.File.FullName, watcher); this.moreTimeLimit.Add(config.Builder.File.File.FullName, DateTime.Now); watcher.Created += AppWatcher_Created; watcher.Changed += AppWatcher_Changed; watcher.Deleted += AppWatcher_Deleted; watcher.Renamed += AppWatcher_Renamed; } } } this.Replace(Change).Start(); }
/// <summary> /// 服务端 /// </summary> /// <param name="startup"></param> /// <param name="shareFiles"></param> /// <param name="shareFileEventHandler"></param> /// <param name="fileChangeTimer">fileChangeTimer</param> /// <param name="appFiles"></param> /// <param name="keyValueFinder"></param> /// <param name="listenPoint"></param> /// <param name="configFileServer"></param> /// <param name="configurationWatcher"></param> /// <returns></returns> public static ApplicationStartup UseJsonConfigServer(this ApplicationStartup startup, IEnumerable <ConfigFileInfo> shareFiles, EventHandler <ShareFileEventArgs> shareFileEventHandler, IEnumerable <ConfigFileInfo> appFiles, ICustomKeyValueFinder keyValueFinder, EndPoint listenPoint, TimeSpan fileChangeTimer, out ConfigFileServer configFileServer, out ConfigurationWatcher configurationWatcher) { var shareBuilders = shareFiles == null ? new List <ShareConfigurationBuilder>() : shareFiles.Select(ta => new Never.Configuration.ConfigCenter.ShareConfigurationBuilder(ta)).ToList(); shareBuilders.UseForEach(builder => { if (shareFileEventHandler != null) { builder.OnBuilding += shareFileEventHandler; } builder.Build(); }); var jsonBuilders = appFiles == null ? new List <JsonConfigurationBuilder>() : appFiles.Select(ta => new Never.Configuration.ConfigCenter.JsonConfigurationBuilder(shareBuilders, ta, keyValueFinder)).ToList(); jsonBuilders.UseForEach(builder => { builder.Build(); }); configurationWatcher = new Never.Configuration.ConfigCenter.ConfigurationWatcher(shareBuilders, jsonBuilders, keyValueFinder, fileChangeTimer) { ShareFileEventHandler = shareFileEventHandler, }; var server = new Never.Configuration.ConfigCenter.Remoting.ConfigFileServer(listenPoint, configurationWatcher); configFileServer = server; return(startup); }
/// <summary> /// 服务端 /// </summary> /// <param name="startup"></param> /// <param name="shareFiles"></param> /// <param name="shareFileEventHandler"></param> /// <param name="appFiles"></param> /// <param name="keyValueFinder"></param> /// <param name="listenPoint"></param> /// <param name="configFileServer"></param> /// <param name="configurationWatcher"></param> /// <returns></returns> public static ApplicationStartup UseJsonConfigServer(this ApplicationStartup startup, IEnumerable <ConfigFileInfo> shareFiles, EventHandler <ShareFileEventArgs> shareFileEventHandler, IEnumerable <ConfigFileInfo> appFiles, ICustomKeyValueFinder keyValueFinder, EndPoint listenPoint, out ConfigFileServer configFileServer, out ConfigurationWatcher configurationWatcher) { return(UseJsonConfigServer(startup, shareFiles, shareFileEventHandler, appFiles, keyValueFinder, listenPoint, TimeSpan.FromMinutes(1), out configFileServer, out configurationWatcher)); }
/// <summary> /// /// </summary> public ConfigurationWatcher(IEnumerable <ShareConfigurationBuilder> shareConfiguration, IEnumerable <IShareFileReference> appConfiguration, ICustomKeyValueFinder keyValueFinder) : this(shareConfiguration, appConfiguration, keyValueFinder, TimeSpan.FromSeconds(60)) { }