package org.ovirt.engine.core.uutils.ssh; import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; import javax.validation.constraints.NotNull; /** * Monitor progress of output stream. * * The underlying ssh library does not provide any mean of monitoring progress. */ public class ProgressInputStream extends FilterInputStream { private int index; public ProgressInputStream(InputStream in) { super(in); index = 0; } @Override public int read(@NotNull byte[] b, int off, int len) throws IOException { int ret = in.read(b, off, len); if (ret != -1) { index += ret; } return ret; } @Override public int read() throws IOException { int ret = in.read(); if (ret != -1) { index++; } return ret; } public boolean wasProgress() { if (index == 0) { return false; } else { index = 0; return true; } } }