2 using System.Collections.Generic;
3 using System.Diagnostics.Contracts;
6 using System.Threading;
7 using Pithos.Interfaces;
11 [ContractClass(typeof(IStatusKeeperContract))]
12 public interface IStatusKeeper
14 void SetFileOverlayStatus(string path,FileOverlayStatus status);
15 void UpdateFileChecksum(string path, string checksum);
16 void RemoveFileOverlayStatus(string path);
17 void SetFileStatus(string path, FileStatus status);
18 FileStatus GetFileStatus(string path);
19 void ClearFileStatus(string path);
20 void SetPithosStatus(PithosStatus status);
21 FileOverlayStatus GetFileOverlayStatus(string path);
22 IEnumerable<string> StoreUnversionedFiles(ParallelQuery<string> paths);
24 void SetFileState(string path, FileStatus fileStatus, FileOverlayStatus overlayStatus);
25 void StoreInfo(string path, ObjectInfo objectInfo);
26 T GetStatus<T>(string path,Func<FileState,T> getter,T defaultValue );
27 void SetStatus(string path, Action<FileState> setter);
28 void SetNetworkState(string fileName, NetworkState uploading);
29 NetworkState GetNetworkState(string fileName);
31 void StartProcessing(CancellationToken token);
35 [ContractClassFor(typeof(IStatusKeeper))]
36 public abstract class IStatusKeeperContract : IStatusKeeper
38 public void SetFileOverlayStatus(string path, FileOverlayStatus status)
40 Contract.Requires(!String.IsNullOrWhiteSpace(path));
43 public void UpdateFileChecksum(string path, string checksum)
45 Contract.Requires(!String.IsNullOrWhiteSpace(path));
46 Contract.Requires(checksum!=null);
49 public void RemoveFileOverlayStatus(string path)
51 Contract.Requires(!String.IsNullOrWhiteSpace(path));
54 public void RenameFileOverlayStatus(string oldPath, string newPath)
56 Contract.Requires(!String.IsNullOrWhiteSpace(oldPath));
57 Contract.Requires(!String.IsNullOrWhiteSpace(newPath));
61 public void SetFileStatus(string path, FileStatus status)
63 Contract.Requires(!String.IsNullOrWhiteSpace(path));
66 public FileStatus GetFileStatus(string path)
68 Contract.Requires(!String.IsNullOrWhiteSpace(path));
70 return default(FileStatus);
73 public FileOverlayStatus GetFileOverlayStatus(string path)
75 Contract.Requires(!String.IsNullOrWhiteSpace(path));
77 return default(FileOverlayStatus);
80 public IEnumerable<string> StoreUnversionedFiles(ParallelQuery<string> paths)
82 Contract.Requires(paths!=null);
84 return default(IEnumerable<string>);
92 public void SetFileState(string path, FileStatus fileStatus, FileOverlayStatus overlayStatus)
94 Contract.Requires(!String.IsNullOrWhiteSpace(path));
97 public void StoreInfo(string path, ObjectInfo objectInfo)
99 Contract.Requires(!String.IsNullOrWhiteSpace(path));
100 Contract.Requires(objectInfo!=null);
103 public T GetStatus<T>(string path, Func<FileState, T> getter, T defaultValue)
105 Contract.Requires(!String.IsNullOrWhiteSpace(path));
106 Contract.Requires(getter!=null);
111 public void SetStatus(string path, Action<FileState> setter)
113 Contract.Requires(!String.IsNullOrWhiteSpace(path));
114 Contract.Requires(setter != null);
117 public void SetNetworkState(string path, NetworkState uploading)
119 Contract.Requires(!String.IsNullOrWhiteSpace(path));
122 public NetworkState GetNetworkState(string path)
124 Contract.Requires(!String.IsNullOrWhiteSpace(path));
126 return default(NetworkState);
129 public void ClearFileStatus(string path)
131 Contract.Requires(!String.IsNullOrWhiteSpace(path));
134 public void SetPithosStatus(PithosStatus status)
138 public void StartProcessing(CancellationToken token)
140 Contract.Requires(token != null, "token can't be empty");