NativeLinuxInputStream.java

package eu.javaexperience.nativ.java.socket;

import java.io.IOException;
import java.io.InputStream;

import eu.javaexperience.nativ.java.JavaNativeExtension;

public class NativeLinuxInputStream extends InputStream
{
	public NativeLinuxInputStream(FileDescriptorHolder fdh)
	{
		this.fdh = fdh;
	}
	
	protected FileDescriptorHolder fdh;
	
	/*protected static final int readBufferMaxSize = 8096;
	
	//acclocationg a buffer is expensive
	protected long readBuffer = Posix.malloc(readBufferMaxSize);
	
	@Override
	protected void finalize() throws Throwable
	{
		Posix.free(readBuffer);
		super.finalize();
	}
	*/
	
	@Override
	public int read() throws IOException
	{
		byte[] rb = new byte[1];
		int ret = read(rb);
		if(ret < 1)
		{
			return -1;
		}
	
		return rb[0];
	}
	
	@Override
	public int read(byte[] b, int off, int len) throws IOException
	{
		//return JavaNativeExtension.checkedBufferedRead(fdh.getFd(), readBuffer, readBufferMaxSize, b, off, len);
		//return JavaNativeExtension.checkedRead(fdh.getFd(), b, off, len);
		return JavaNativeExtension.checkedExperimentalRead(fdh.getFd(), b, off, len);
	}
}