blob: 36fa20f5ac38b05f232e2f27d4d96ff39790ffd9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.carbondata.core.datastore;
import java.io.IOException;
import java.nio.ByteBuffer;
public interface FileReader {
/**
* This method will be used to reads the data to byteBuffer from file based on offset
* and length(number of bytes) need to read
*
* @param filePath fully qualified file path
* @param offset reading start position,
* @param length number of bytes to be read
* @return ByteBuffer
* @throws IOException
*/
ByteBuffer readByteBuffer(String filePath, long offset, int length)
throws IOException;
/**
* This method will be used to read the byte array from file based on offset
* and length(number of bytes) need to read
*
* @param filePath fully qualified file path
* @param offset reading start position,
* @param length number of bytes to be read
* @return read byte array
*/
byte[] readByteArray(String filePath, long offset, int length) throws IOException;
/**
* This method will be used to read the byte array from file based on length(number of bytes)
*
* @param filePath fully qualified file path
* @param length number of bytes to be read
* @return read byte array
*/
byte[] readByteArray(String filePath, int length) throws IOException;
/**
* This method will be used to read int from file from position(offset), here
* length will be always 4 because int byte size if 4
*
* @param filePath fully qualified file path
* @param offset reading start position,
* @return read int
*/
int readInt(String filePath, long offset) throws IOException;
/**
* This method will be used to read long from file from position(offset), here
* length will be always 8 because int byte size is 8
*
* @param filePath fully qualified file path
* @param offset reading start position,
* @return read long
*/
long readLong(String filePath, long offset) throws IOException;
/**
* This method will be used to read int from file from position(offset), here
* length will be always 4 because int byte size if 4
*
* @param filePath fully qualified file path
* @return read int
*/
int readInt(String filePath) throws IOException;
/**
* This method will be used to read long value from file from position(offset), here
* length will be always 8 because long byte size if 4
*
* @param filePath fully qualified file path
* @param offset reading start position,
* @return read long
*/
long readDouble(String filePath, long offset) throws IOException;
/**
* This method will be used to close all the streams currently present in the cache
*/
void finish() throws IOException;
/**
* Set the flag to read data page by page instead of whole blocklet.
*
* @param isReadPageByPage
*/
void setReadPageByPage(boolean isReadPageByPage);
/**
* Whether read the data page by page from carbondata file instead of reading whole
* blocklet to memory. It is need in case of memory constraint operations.
*/
boolean isReadPageByPage();
}