Statistics
| Branch: | Revision:

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
}