2 using System.Collections.Generic;
3 using System.ComponentModel.Composition;
4 using System.Diagnostics.Contracts;
5 using Pithos.Interfaces;
9 //[Export(typeof(IStatusChecker)),Export(typeof(IStatusKeeper))]
10 public class InMemStatusChecker:IStatusChecker,IStatusKeeper
13 public IPithosSettings Settings { get; set; }
15 private readonly string[] _states = {"Normal", "Modified", "Conflict","Synch"};
17 Dictionary<string,FileOverlayStatus> _overlayCache=new Dictionary<string,FileOverlayStatus>();
18 Dictionary<string, FileStatus> _statusCache= new Dictionary<string, FileStatus>();
19 Dictionary<string, string> _checksums = new Dictionary<string, string>();
21 public FileOverlayStatus GetFileOverlayStatus(string path)
23 if (!_overlayCache.ContainsKey(path))
24 return FileOverlayStatus.NA;
26 var pithosPath = Settings.PithosPath;
27 if (path.StartsWith(pithosPath,true,null))
29 var status = _overlayCache[path];
32 return FileOverlayStatus.NA;
35 public PithosStatus GetPithosStatus()
37 return PithosStatus.InSynch;
40 public void SetFileOverlayStatus(string path, FileOverlayStatus overlayStatus)
42 _overlayCache[path] = overlayStatus;
45 public void RemoveFileOverlayStatus(string path)
47 _overlayCache.Remove(path);
50 public void RenameFileOverlayStatus(string oldPath, string newPath)
52 var status=_overlayCache[oldPath];
53 _overlayCache[newPath] = status;
54 _overlayCache.Remove(oldPath);
57 public void SetFileStatus(string path, FileStatus status)
59 _statusCache[path] = status;
62 public FileStatus GetFileStatus(string path)
64 if (!_statusCache.ContainsKey(path))
65 return FileStatus.Missing;
66 return _statusCache[path];
69 public void ClearFileStatus(string path)
71 _statusCache.Remove(path);
74 public void UpdateFileChecksum(string path, string checksum)
76 _checksums[path] = checksum;