001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.apache.hadoop.hbase.io.hfile; 019 020import org.apache.hadoop.fs.Path; 021import org.apache.hadoop.hbase.HConstants; 022import org.apache.hadoop.hbase.fs.HFileSystem; 023import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper; 024import org.apache.yetus.audience.InterfaceAudience; 025 026/** 027 * Carries the information on some of the meta data about the HFile Reader 028 */ 029@InterfaceAudience.Private 030public class ReaderContext { 031 @InterfaceAudience.Private 032 public enum ReaderType { 033 PREAD, 034 STREAM 035 } 036 037 private final Path filePath; 038 private final FSDataInputStreamWrapper fsdis; 039 private final long fileSize; 040 private final HFileSystem hfs; 041 private final boolean primaryReplicaReader; 042 private final ReaderType type; 043 private final boolean preadAllBytes; 044 045 public ReaderContext(Path filePath, FSDataInputStreamWrapper fsdis, long fileSize, 046 HFileSystem hfs, boolean primaryReplicaReader, ReaderType type) { 047 this.filePath = filePath; 048 this.fsdis = fsdis; 049 this.fileSize = fileSize; 050 this.hfs = hfs; 051 this.primaryReplicaReader = primaryReplicaReader; 052 this.type = type; 053 this.preadAllBytes = hfs.getConf().getBoolean(HConstants.HFILE_PREAD_ALL_BYTES_ENABLED_KEY, 054 HConstants.HFILE_PREAD_ALL_BYTES_ENABLED_DEFAULT); 055 } 056 057 public Path getFilePath() { 058 return this.filePath; 059 } 060 061 public FSDataInputStreamWrapper getInputStreamWrapper() { 062 return this.fsdis; 063 } 064 065 public long getFileSize() { 066 return this.fileSize; 067 } 068 069 public HFileSystem getFileSystem() { 070 return this.hfs; 071 } 072 073 public boolean isPrimaryReplicaReader() { 074 return this.primaryReplicaReader; 075 } 076 077 public ReaderType getReaderType() { 078 return this.type; 079 } 080 081 public boolean isPreadAllBytes() { 082 return preadAllBytes; 083 } 084}