1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.hadoop.hbase.io.encoding;
18
19 import java.io.ByteArrayInputStream;
20 import java.io.DataInputStream;
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.nio.ByteBuffer;
24
25 import org.apache.hadoop.classification.InterfaceAudience;
26 import org.apache.hadoop.hbase.io.compress.Compression;
27 import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
28
29
30
31
32
33
34
35
36 @InterfaceAudience.Private
37 public class HFileBlockDefaultDecodingContext implements
38 HFileBlockDecodingContext {
39
40 private final Compression.Algorithm compressAlgo;
41
42 public HFileBlockDefaultDecodingContext(
43 Compression.Algorithm compressAlgo) {
44 this.compressAlgo = compressAlgo;
45 }
46
47 @Override
48 public void prepareDecoding(int onDiskSizeWithoutHeader, int uncompressedSizeWithoutHeader,
49 ByteBuffer blockBufferWithoutHeader, byte[] onDiskBlock, int offset) throws IOException {
50 DataInputStream dis = new DataInputStream(new ByteArrayInputStream(onDiskBlock, offset,
51 onDiskSizeWithoutHeader));
52
53 Compression.decompress(blockBufferWithoutHeader.array(),
54 blockBufferWithoutHeader.arrayOffset(), (InputStream) dis, onDiskSizeWithoutHeader,
55 uncompressedSizeWithoutHeader, compressAlgo);
56 }
57
58 @Override
59 public Algorithm getCompression() {
60 return compressAlgo;
61 }
62
63 }