1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.codec.prefixtree.decode.timestamp;
20
21 import org.apache.hadoop.hbase.classification.InterfaceAudience;
22 import org.apache.hadoop.hbase.codec.prefixtree.PrefixTreeBlockMeta;
23 import org.apache.hadoop.hbase.util.vint.UFIntTool;
24
25
26
27
28 @InterfaceAudience.Private
29 public class TimestampDecoder {
30
31 protected PrefixTreeBlockMeta blockMeta;
32 protected byte[] block;
33
34
35
36
37 public TimestampDecoder() {
38 }
39
40 public void initOnBlock(PrefixTreeBlockMeta blockMeta, byte[] block) {
41 this.block = block;
42 this.blockMeta = blockMeta;
43 }
44
45
46
47
48 public long getLong(int index) {
49 if (blockMeta.getTimestampIndexWidth() == 0) {
50 return blockMeta.getMinTimestamp();
51 }
52 int startIndex = blockMeta.getAbsoluteTimestampOffset() + blockMeta.getTimestampDeltaWidth()
53 * index;
54 long delta = UFIntTool.fromBytes(block, startIndex, blockMeta.getTimestampDeltaWidth());
55 return blockMeta.getMinTimestamp() + delta;
56 }
57 }