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;
36 private PithosStatus _pithosStatus = PithosStatus.InSynch;
37 public void SetPithosStatus(PithosStatus status)
39 _pithosStatus = status;
42 public PithosStatus GetPithosStatus()
47 public void SetFileOverlayStatus(string path, FileOverlayStatus overlayStatus)
49 _overlayCache[path] = overlayStatus;
52 public void RemoveFileOverlayStatus(string path)
54 _overlayCache.Remove(path);
57 public void RenameFileOverlayStatus(string oldPath, string newPath)
59 var status=_overlayCache[oldPath];
60 _overlayCache[newPath] = status;
61 _overlayCache.Remove(oldPath);
64 public void SetFileStatus(string path, FileStatus status)
66 _statusCache[path] = status;
69 public FileStatus GetFileStatus(string path)
71 if (!_statusCache.ContainsKey(path))
72 return FileStatus.Missing;
73 return _statusCache[path];
76 public void ClearFileStatus(string path)
78 _statusCache.Remove(path);
81 public void UpdateFileChecksum(string path, string checksum)
83 _checksums[path] = checksum;