All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.googlecode.mycontainer.util.tunnel.TunnelData Maven / Gradle / Ivy

The newest version!
package com.googlecode.mycontainer.util.tunnel;

import java.io.IOException;
import java.io.InputStream;
import java.net.SocketTimeoutException;

public class TunnelData {

	private TunnelState state = TunnelState.RUN;

	private final InputStream in;

	private byte[] data = new byte[10 * 1024];

	private int offset = 0;

	public TunnelData(InputStream in) {
		this.in = in;
	}

	public void readData() {
		try {
			if (offset >= data.length) {
				return;
			}
			if (TunnelState.STOP.equals(state)) {
				if (offset > 0) {
					return;
				}
				throw new RuntimeException("wrong");
			}
			int read = in.read(data, offset, data.length - offset);
			if (read >= 0) {
				offset += read;
			} else {
				state = TunnelState.STOP;
			}
		} catch (SocketTimeoutException e) {
			return;
		} catch (IOException e) {
			throw new RuntimeException(e);
		}
	}

	public byte[] consume() {
		byte[] ret = getBuffer();
		offset = 0;
		return ret;
	}

	public byte[] getBuffer() {
		byte[] ret = new byte[offset];
		System.arraycopy(data, 0, ret, 0, offset);
		return ret;
	}

	public boolean isStopped() {
		return TunnelState.STOP.equals(state);
	}

	public boolean hasBuffer() {
		return offset > 0;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy