private void OnChange(object sender, FileSystemEventArgs e) { var path = e.FullPath; RRTracer.Trace("watcher watched {0}", path); var guid = uriBuilder.ParseKey(path.Replace('\\', '/')); var contentSignature = uriBuilder.ParseSignature(path.Replace('\\', '/')); if (guid != Guid.Empty) { var resourceType = RRContainer.Current.GetAllInstances <IResourceType>().SingleOrDefault(x => path.EndsWith(x.FileName, true, CultureInfo.InvariantCulture)); if (resourceType != null) { RRTracer.Trace("New Content {0} and watched: {1}", e.ChangeType, path); if (e.ChangeType == WatcherChangeTypes.Deleted) { ReductionRepository.RemoveReduction(guid); } if ((e.ChangeType == WatcherChangeTypes.Created || e.ChangeType == WatcherChangeTypes.Changed)) { ReductionRepository.AddReduction(guid, uriBuilder.BuildResourceUrl(guid, contentSignature, resourceType.GetType())); } } } }
public void Flush(Guid keyGuid) { if (keyGuid == Guid.Empty) { var urls = GetSavedUrls(); foreach (var key in urls.Keys) { Flush(key); } } var files = repository.GetFilesFromKey(keyGuid); foreach (var file in files) { file.IsExpired = true; repository.Save(file); } reductionRepository.RemoveReduction(keyGuid); }