root / trunk / Pithos.Core / Agents / StateTuple.cs @ 537c5f20
History | View | Annotate | Download (1.9 kB)
1 | 225694f9 | pkanavos | using System; |
---|---|---|---|
2 | 225694f9 | pkanavos | using System.Diagnostics; |
3 | 225694f9 | pkanavos | using System.IO; |
4 | 225694f9 | pkanavos | using Pithos.Interfaces; |
5 | 225694f9 | pkanavos | using Pithos.Network; |
6 | 225694f9 | pkanavos | |
7 | 225694f9 | pkanavos | namespace Pithos.Core.Agents |
8 | 225694f9 | pkanavos | { |
9 | 225694f9 | pkanavos | [DebuggerDisplay("{FilePath} C:{C} L:{L} S:{S}")] |
10 | 225694f9 | pkanavos | public class StateTuple |
11 | 225694f9 | pkanavos | { |
12 | 225694f9 | pkanavos | public string FilePath { get; private set; } |
13 | 225694f9 | pkanavos | |
14 | 225694f9 | pkanavos | public string MD5 { get; set; } |
15 | 225694f9 | pkanavos | |
16 | 225694f9 | pkanavos | public string L |
17 | 225694f9 | pkanavos | { |
18 | 225694f9 | pkanavos | get |
19 | 225694f9 | pkanavos | { |
20 | a60e5887 | pkanavos | var hash = FileState.NullSafe(f => f.ETag); |
21 | 225694f9 | pkanavos | return String.IsNullOrWhiteSpace(hash) ? null : hash; |
22 | 225694f9 | pkanavos | } |
23 | 225694f9 | pkanavos | } |
24 | 225694f9 | pkanavos | |
25 | 225694f9 | pkanavos | private string _c; |
26 | 225694f9 | pkanavos | public string C |
27 | 225694f9 | pkanavos | { |
28 | 225694f9 | pkanavos | get { return _c; } |
29 | 225694f9 | pkanavos | set { |
30 | 225694f9 | pkanavos | _c = String.IsNullOrWhiteSpace(value) ? null : value; |
31 | 225694f9 | pkanavos | } |
32 | 225694f9 | pkanavos | } |
33 | 225694f9 | pkanavos | |
34 | 225694f9 | pkanavos | public string S |
35 | 225694f9 | pkanavos | { |
36 | 225694f9 | pkanavos | get |
37 | 225694f9 | pkanavos | { |
38 | 225694f9 | pkanavos | var etag = ObjectInfo.NullSafe(o => o.ETag); |
39 | 225694f9 | pkanavos | return String.IsNullOrWhiteSpace(etag) ? null : etag; |
40 | 225694f9 | pkanavos | } |
41 | 225694f9 | pkanavos | } |
42 | 225694f9 | pkanavos | |
43 | 225694f9 | pkanavos | private FileSystemInfo _fileInfo; |
44 | 225694f9 | pkanavos | private TreeHash _merkle; |
45 | 225694f9 | pkanavos | |
46 | 225694f9 | pkanavos | public FileSystemInfo FileInfo |
47 | 225694f9 | pkanavos | { |
48 | 225694f9 | pkanavos | get { return _fileInfo; } |
49 | 225694f9 | pkanavos | set |
50 | 225694f9 | pkanavos | { |
51 | 225694f9 | pkanavos | _fileInfo = value; |
52 | 225694f9 | pkanavos | FilePath = value.FullName; |
53 | 225694f9 | pkanavos | } |
54 | 225694f9 | pkanavos | } |
55 | 225694f9 | pkanavos | |
56 | 225694f9 | pkanavos | public FileState FileState { get; set; } |
57 | 225694f9 | pkanavos | public ObjectInfo ObjectInfo{ get; set; } |
58 | 225694f9 | pkanavos | |
59 | 225694f9 | pkanavos | |
60 | 225694f9 | pkanavos | public TreeHash Merkle |
61 | 225694f9 | pkanavos | { |
62 | 225694f9 | pkanavos | get { |
63 | 225694f9 | pkanavos | return _merkle; |
64 | 225694f9 | pkanavos | } |
65 | 225694f9 | pkanavos | set { |
66 | 225694f9 | pkanavos | _merkle = value; |
67 | 225694f9 | pkanavos | C = _merkle.MD5; |
68 | 225694f9 | pkanavos | } |
69 | 225694f9 | pkanavos | } |
70 | 225694f9 | pkanavos | |
71 | a60e5887 | pkanavos | public bool Locked { get; set; } |
72 | a60e5887 | pkanavos | |
73 | 225694f9 | pkanavos | public StateTuple() { } |
74 | 225694f9 | pkanavos | |
75 | 225694f9 | pkanavos | public StateTuple(FileSystemInfo info) |
76 | 225694f9 | pkanavos | { |
77 | 225694f9 | pkanavos | FileInfo = info; |
78 | 225694f9 | pkanavos | } |
79 | 225694f9 | pkanavos | |
80 | 225694f9 | pkanavos | public bool HashesValid() |
81 | 225694f9 | pkanavos | { |
82 | 225694f9 | pkanavos | return ( (C==null || C.Length == 32) |
83 | 225694f9 | pkanavos | && (L==null || L.Length == 32) |
84 | 225694f9 | pkanavos | && (S==null || S.Length == 32) |
85 | 225694f9 | pkanavos | ); |
86 | 225694f9 | pkanavos | } |
87 | 225694f9 | pkanavos | } |
88 | 225694f9 | pkanavos | } |