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.Order;
23 import org.apache.hadoop.hbase.util.OrderedBytes;
24 import org.apache.hadoop.hbase.util.PositionedByteRange;
25
26
27
28
29
30 @InterfaceAudience.Public
31 @InterfaceStability.Evolving
32 public class OrderedBlob extends OrderedBytesBase<byte[]> {
33
34 public static final OrderedBlob ASCENDING = new OrderedBlob(Order.ASCENDING);
35 public static final OrderedBlob DESCENDING = new OrderedBlob(Order.DESCENDING);
36
37 protected OrderedBlob(Order order) { super(order); }
38
39 @Override
40 public boolean isSkippable() { return false; }
41
42 @Override
43 public int encodedLength(byte[] val) {
44 return null == val ?
45 (Order.ASCENDING == order ? 1 : 2) :
46 (Order.ASCENDING == order ? val.length + 1 : val.length + 2);
47 }
48
49 @Override
50 public Class<byte[]> encodedClass() { return byte[].class; }
51
52 @Override
53 public byte[] decode(PositionedByteRange src) {
54 return OrderedBytes.decodeBlobCopy(src);
55 }
56
57 @Override
58 public int encode(PositionedByteRange dst, byte[] val) {
59 return OrderedBytes.encodeBlobCopy(dst, val, order);
60 }
61
62
63
64
65 public int encode(PositionedByteRange dst, byte[] val, int voff, int vlen) {
66 return OrderedBytes.encodeBlobCopy(dst, val, voff, vlen, order);
67 }
68 }