1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.types;
19
20 import org.apache.hadoop.hbase.classification.InterfaceAudience;
21 import org.apache.hadoop.hbase.classification.InterfaceStability;
22 import org.apache.hadoop.hbase.util.Bytes;
23 import org.apache.hadoop.hbase.util.Order;
24 import org.apache.hadoop.hbase.util.PositionedByteRange;
25
26
27
28
29
30
31
32
33
34
35
36
37 @InterfaceAudience.Public
38 @InterfaceStability.Evolving
39 public class RawBytes implements DataType<byte[]> {
40
41 public static final RawBytes ASCENDING = new RawBytes(Order.ASCENDING);
42 public static final RawBytes DESCENDING = new RawBytes(Order.DESCENDING);
43
44 protected final Order order;
45
46 protected RawBytes() { this.order = Order.ASCENDING; }
47 protected RawBytes(Order order) { this.order = order; }
48
49 @Override
50 public boolean isOrderPreserving() { return true; }
51
52 @Override
53 public Order getOrder() { return order; }
54
55 @Override
56 public boolean isNullable() { return false; }
57
58 @Override
59 public boolean isSkippable() { return false; }
60
61 @Override
62 public int skip(PositionedByteRange src) {
63 int skipped = src.getRemaining();
64 src.setPosition(src.getLength());
65 return skipped;
66 }
67
68 @Override
69 public int encodedLength(byte[] val) { return val.length; }
70
71 @Override
72 public Class<byte[]> encodedClass() { return byte[].class; }
73
74 @Override
75 public byte[] decode(PositionedByteRange src) {
76 return decode(src, src.getRemaining());
77 }
78
79 @Override
80 public int encode(PositionedByteRange dst, byte[] val) {
81 return encode(dst, val, 0, val.length);
82 }
83
84
85
86
87 public byte[] decode(PositionedByteRange src, int length) {
88 byte[] val = new byte[length];
89 src.get(val);
90 return val;
91 }
92
93
94
95
96
97 public int encode(PositionedByteRange dst, byte[] val, int voff, int vlen) {
98 Bytes.putBytes(dst.getBytes(), dst.getOffset() + dst.getPosition(), val, voff, vlen);
99 dst.setPosition(dst.getPosition() + vlen);
100 return vlen;
101 }
102 }