/*
* 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 tachyon.client;
import java.io.IOException;
import java.io.InputStream;
import tachyon.conf.UserConf;
/**
* <code>InStream</code> is the base input stream class for TachyonFile streaming input methods.
* It can only be gotten by calling the methods in <code>tachyon.client.TachyonFile</code>, but
* can not be initialized by the client code.
*/
public abstract class InStream extends InputStream {
protected final UserConf USER_CONF = UserConf.get();
protected final TachyonFile FILE;
protected final TachyonFS TFS;
protected final ReadType READ_TYPE;
/**
* @param file
* the input file of the InStream
* @param readType
* the InStream's read type
*/
InStream(TachyonFile file, ReadType readType) {
FILE = file;
TFS = FILE.TFS;
READ_TYPE = readType;
}
@Override
public abstract void close() throws IOException;
@Override
public abstract int read() throws IOException;
@Override
public abstract int read(byte b[]) throws IOException;
@Override
public abstract int read(byte b[], int off, int len) throws IOException;
/**
* Sets the stream pointer offset, measured from the beginning of this stream, at which the next
* read or write occurs. The offset may be set beyond the end of the stream.
*
* @param pos
* the offset position, measured in bytes from the beginning of the InStream, at which
* to set the stream pointer.
* @throws IOException
* if pos is less than 0 or if an I/O error occurs.
*/
public abstract void seek(long pos) throws IOException;
@Override
public abstract long skip(long n) throws IOException;
}