X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2Ffilter%2FExternalFilter.java;h=6b68c28fd61725101157603d7f09ad4b1a07a284;hb=d9a909a0e39b2925aece35c2298cfc3c35d35051;hp=3452c7692f6bc119309bf7e1dc15901ad6607e88;hpb=7c0955003c1eb215da5f763e986e99e68206a086;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 3452c76..6b68c28 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/filter/ExternalFilter.java +++ b/src/main/java/net/pterodactylus/sonitus/data/filter/ExternalFilter.java @@ -21,7 +21,6 @@ import java.io.EOFException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.io.PipedInputStream; import java.io.PipedOutputStream; import java.util.Arrays; import java.util.logging.Logger; @@ -29,7 +28,6 @@ import java.util.logging.Logger; import net.pterodactylus.sonitus.data.ConnectException; import net.pterodactylus.sonitus.data.Connection; import net.pterodactylus.sonitus.data.Filter; -import net.pterodactylus.sonitus.data.Format; import net.pterodactylus.sonitus.data.Metadata; import net.pterodactylus.sonitus.data.Source; import net.pterodactylus.sonitus.io.InputStreamDrainer; @@ -37,7 +35,6 @@ import net.pterodactylus.sonitus.io.InputStreamDrainer; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; -import com.google.common.io.ByteStreams; /** * {@link Filter} implementation that runs its {@link Source} through an @@ -53,19 +50,13 @@ public abstract class ExternalFilter implements Filter { /** The source. */ private Source source; - /** The input stream that will hold the converted source. */ - private PipedInputStream pipedInputStream; + private InputStream processInputStream; // // FILTER METHODS // @Override - public Format format() { - return source.format(); - } - - @Override public Metadata metadata() { return source.metadata(); } @@ -73,7 +64,7 @@ public abstract class ExternalFilter implements Filter { @Override public byte[] get(int bufferSize) throws EOFException, IOException { byte[] buffer = new byte[bufferSize]; - int read = pipedInputStream.read(buffer); + int read = processInputStream.read(buffer); if (read == -1) { throw new EOFException(); } @@ -86,25 +77,12 @@ public abstract class ExternalFilter implements Filter { this.source = source; try { - final Process process = Runtime.getRuntime().exec(Iterables.toArray(ImmutableList.builder().add(binary(source.format())).addAll(parameters(source.format())).build(), String.class)); - final InputStream processOutput = process.getInputStream(); + final Process process = Runtime.getRuntime().exec(Iterables.toArray(ImmutableList.builder().add(binary(source.metadata())).addAll(parameters(source.metadata())).build(), String.class)); + processInputStream = process.getInputStream(); final OutputStream processInput = process.getOutputStream(); final InputStream processError = process.getErrorStream(); final PipedOutputStream pipedOutputStream = new PipedOutputStream(); - pipedInputStream = new PipedInputStream(pipedOutputStream); new Thread(new InputStreamDrainer(processError)).start(); - new Thread(new Runnable() { - - @Override - public void run() { - try { - ByteStreams.copy(processOutput, pipedOutputStream); - } catch (IOException ioe1) { - /* okay, just exit. */ - } - logger.finest("Reading stdout finished."); - } - }).start(); new Thread(new Connection(source) { @Override @@ -121,7 +99,6 @@ public abstract class ExternalFilter implements Filter { @Override protected void finish() throws IOException { processInput.close(); - processOutput.close(); processError.close(); } }).start(); @@ -142,19 +119,19 @@ public abstract class ExternalFilter implements Filter { /** * Returns the location of the binary to execute. * - * @param format - * The format being processed + * @param metadata + * The metadata being processed * @return The location of the binary to execute */ - protected abstract String binary(Format format); + protected abstract String binary(Metadata metadata); /** * Returns the parameters for the binary. * - * @param format - * The format being processed + * @param metadata + * The metadata being processed * @return The parameters for the binary */ - protected abstract Iterable parameters(Format format); + protected abstract Iterable parameters(Metadata metadata); }