예제 #1
0
        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()));
                    }
                }
            }
        }
예제 #2
0
        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);
        }