package mil.nga.giat.geowave.core.ingest.hdfs.mapreduce;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
public class ByteBufferBackedInputStream extends
InputStream
{
private final ByteBuffer buf;
public ByteBufferBackedInputStream(
final ByteBuffer buf ) {
this.buf = buf;
}
@Override
public int read()
throws IOException {
if (!buf.hasRemaining()) {
return -1;
}
return buf.get() & 0xFF;
}
@Override
public int read(
final byte[] bytes,
final int off,
int len )
throws IOException {
if (!buf.hasRemaining()) {
return -1;
}
len = Math.min(
len,
buf.remaining());
buf.get(
bytes,
off,
len);
return len;
}
@Override
public int available()
throws IOException {
return buf.remaining();
}
@Override
public int read(
byte[] bytes )
throws IOException {
if (!buf.hasRemaining()) {
return -1;
}
int len = Math.min(
bytes.length,
buf.remaining());
buf.get(
bytes,
0,
len);
return len;
}
@Override
public synchronized void reset()
throws IOException {
buf.reset();
}
@Override
public long skip(
long len )
throws IOException {
buf.get(new byte[(int) len]);
return len;
}
}