X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2Ffilter%2FExternalFilter.java;h=c2f6715a98abc0e7b31c78d95e16a786ecb98534;hb=305a3bfdb929e13027c3db1638f9930261ace9e7;hp=3b2b6b17082d8fa072ca30d9ffac1bd88e28ea64;hpb=3b2756c528ffa628472cf0b33a440d545607102d;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/data/filter/ExternalFilter.java b/src/main/java/net/pterodactylus/sonitus/data/filter/ExternalFilter.java index 3b2b6b1..c2f6715 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/filter/ExternalFilter.java +++ b/src/main/java/net/pterodactylus/sonitus/data/filter/ExternalFilter.java @@ -31,6 +31,7 @@ import net.pterodactylus.sonitus.data.Connection; import net.pterodactylus.sonitus.data.Filter; import net.pterodactylus.sonitus.data.Format; import net.pterodactylus.sonitus.data.Source; +import net.pterodactylus.sonitus.io.InputStreamDrainer; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -46,7 +47,7 @@ import com.google.common.io.ByteStreams; public abstract class ExternalFilter implements Filter { /** The logger. */ - private static final Logger logger = Logger.getLogger(ExternalFilter.class.getName()); + private final Logger logger = Logger.getLogger(getClass().getName()); /** The format of the source. */ private Format format; @@ -81,18 +82,7 @@ public abstract class ExternalFilter implements Filter { final InputStream processError = process.getErrorStream(); final PipedOutputStream pipedOutputStream = new PipedOutputStream(); pipedInputStream = new PipedInputStream(pipedOutputStream); - new Thread(new Runnable() { - - @Override - public void run() { - try { - drainInputStream(processError); - } catch (IOException ioe1) { - /* ignore, just let the thread exit. */ - } - logger.finest("ExternalFilter: Reading stderr finished."); - } - }).start(); + new Thread(new InputStreamDrainer(processError)).start(); new Thread(new Runnable() { @Override @@ -102,7 +92,7 @@ public abstract class ExternalFilter implements Filter { } catch (IOException ioe1) { /* okay, just exit. */ } - logger.finest("ExternalFilter: Reading stdout finished."); + logger.finest("Reading stdout finished."); } }).start(); new Thread(new Connection(source) { @@ -115,11 +105,14 @@ public abstract class ExternalFilter implements Filter { @Override protected void feed(byte[] buffer) throws IOException { processInput.write(buffer); + processInput.flush(); } @Override protected void finish() throws IOException { processInput.close(); + processOutput.close(); + processError.close(); } }).start(); } catch (IOException ioe1) { @@ -149,17 +142,4 @@ public abstract class ExternalFilter implements Filter { */ protected abstract Iterable parameters(Format format); - // - // STATIC METHODS - // - - private static void drainInputStream(InputStream inputStream) throws IOException { - byte[] buffer = new byte[4096]; - int read; - while ((read = inputStream.read(buffer)) != -1) { - logger.finest(String.format("ExternalFilter: Drained %d Bytes.", read)); - /* do nothing, just read the damn thing. */ - } - } - }