public void Execute(FileSystemCache cache) { var path = cache.GetFilePath(Key); var finalPart = path.LastIndexOf('/'); Directory.CreateDirectory((finalPart == -1)?path:path.Substring(0, finalPart)); File.WriteAllBytes(path, Data); var entry = cache.GetEntry(Key); if (entry == null) { entry = new FileSystemCacheEntry(); entry.Key = Key; entry.LastRead = DateTime.MinValue; entry.LastWrite = DateTime.Now; entry.Length = Data.Length; cache.AddEntry(entry); } else { entry.Length = Data.Length; } }
internal FileSystemCacheEntry GetEntry(CacheKey key) { FileSystemCacheEntry entry = null; _Index.TryGetValue(key, out entry); return(entry); }
internal void AddEntry(FileSystemCacheEntry entry) { var existing = GetEntry(entry.Key); if (existing != null) { _Cache.Remove(existing); } _Cache.AddLast(entry); _Index[entry.Key] = entry; }