[runtime] Disable some tests in full-aot mode which cannot be AOTed because of type...
[mono-project.git] / mcs / class / monodoc / Monodoc / caches / FileCache.cs
blob75ccdd8ab752f1aea744146b8709a26d4f4a98cf
1 using System;
2 using System.IO;
4 namespace Monodoc.Caches
6 public class FileCache : IDocCache
8 string baseCacheDir;
10 public FileCache (string baseCacheDir)
12 this.baseCacheDir = baseCacheDir;
13 if (!Directory.Exists (baseCacheDir))
14 Directory.CreateDirectory (baseCacheDir);
17 public bool IsCached (string id)
19 return File.Exists (MakePath (id));
22 public bool CanCache (DocEntity entity)
24 return true;
27 public Stream GetCachedStream (string id)
29 return File.OpenRead (MakePath (id));
32 public string GetCachedString (string id)
34 return File.ReadAllText (MakePath (id));
37 public void CacheText (string id, string content)
39 File.WriteAllText (MakePath (id), content);
42 public void CacheText (string id, Stream stream)
44 using (var file = File.OpenWrite (MakePath (id)))
45 stream.CopyTo (file);
48 public void CacheBlob (string id, byte[] data)
50 File.WriteAllBytes (MakePath (id), data);
53 public void CacheBlob (string id, Stream stream)
55 using (var file = File.OpenWrite (MakePath (id)))
56 stream.CopyTo (file);
59 string MakePath (string id)
61 id = id.Replace (Path.DirectorySeparatorChar, '_');
62 return Path.Combine (baseCacheDir, id);
65 public void Dispose ()
67 if (!Directory.Exists (baseCacheDir))
68 return;
70 try {
71 Directory.Delete (baseCacheDir, true);
72 } catch {}