42
|
1 package treecms.proto.simple;
|
|
2
|
|
3 import java.util.UUID;
|
|
4 import java.util.concurrent.atomic.AtomicLong;
|
|
5
|
|
6 import treecms.proto.api.NodeID;
|
|
7 import treecms.proto.id.DecrementalNodeID;
|
|
8
|
|
9 public class SimpleDecNodeID extends DecrementalNodeID
|
|
10 {
|
|
11 private String m_uuid;
|
|
12 private AtomicLong m_tip;
|
|
13 private long m_version;
|
|
14
|
|
15 public SimpleDecNodeID()
|
|
16 {
|
|
17 m_uuid = UUID.randomUUID().toString();
|
|
18 m_tip = new AtomicLong();
|
45
|
19 m_tip.set(START_VALUE);
|
42
|
20
|
47
|
21 m_version = START_VALUE;
|
42
|
22 }
|
|
23
|
|
24 private SimpleDecNodeID(String _uuid,AtomicLong _tip,boolean _doUpdate)
|
|
25 {
|
|
26 m_uuid = _uuid;
|
|
27 m_tip = _tip;
|
|
28
|
|
29 if(_doUpdate){
|
47
|
30 m_version = m_tip.decrementAndGet();
|
42
|
31 return;
|
|
32 }
|
|
33
|
|
34 m_version = m_tip.get();
|
|
35 }
|
|
36
|
|
37 @Override
|
|
38 public NodeID create()
|
|
39 {
|
|
40 return new SimpleDecNodeID();
|
|
41 }
|
|
42
|
|
43 @Override
|
|
44 public NodeID getTip()
|
|
45 {
|
|
46 return new SimpleDecNodeID(m_uuid,m_tip,false);
|
|
47 }
|
|
48
|
|
49 @Override
|
|
50 public String getUUID()
|
|
51 {
|
|
52 return m_uuid;
|
|
53 }
|
|
54
|
|
55 @Override
|
|
56 public String getVersion()
|
|
57 {
|
|
58 return Long.toString(m_version);
|
|
59 }
|
|
60
|
|
61 @Override
|
|
62 public NodeID update()
|
|
63 {
|
47
|
64 return new SimpleDecNodeID(m_uuid,m_tip,true);
|
42
|
65 }
|
|
66 }
|