X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2FPipeline.java;h=4e6a457ad8c87704fbb4e4489e6170ad04e132d1;hb=095d258d45033d5b56d0f422971b2866c2799437;hp=d9efcae6dba4c2eacbfa008597ed0bfeea081899;hpb=0f537e6e8b1afaefd0f86dc53a98328135c0b2ee;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/data/Pipeline.java b/src/main/java/net/pterodactylus/sonitus/data/Pipeline.java index d9efcae..4e6a457 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/Pipeline.java +++ b/src/main/java/net/pterodactylus/sonitus/data/Pipeline.java @@ -35,6 +35,7 @@ import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; +import com.google.common.util.concurrent.MoreExecutors; /** * A pipeline is responsible for streaming audio data from a {@link Source} to @@ -234,7 +235,7 @@ public class Pipeline { this.source = source; this.sinks = sinks; if (sinks.size() == 1) { - executorService = Executors.newSingleThreadExecutor(); + executorService = MoreExecutors.sameThreadExecutor(); } else { executorService = Executors.newCachedThreadPool(); } @@ -260,7 +261,14 @@ public class Pipeline { try { final Metadata lastMetadata = firstMetadata; final Metadata metadata = firstMetadata = source.metadata(); - final byte[] buffer = source.get(4096); + final byte[] buffer; + try { + logger.finest(String.format("Getting %d bytes from %s...", 4096, source)); + buffer = source.get(4096); + logger.finest(String.format("Got %d bytes from %s.", buffer.length, source)); + } catch (IOException ioe1) { + throw new IOException(String.format("I/O error while reading from %s.", source), ioe1); + } List> futures = executorService.invokeAll(FluentIterable.from(sinks).transform(new Function>() { @Override @@ -272,7 +280,13 @@ public class Pipeline { if (!metadata.equals(lastMetadata)) { sink.metadataUpdated(metadata); } - sink.process(buffer); + try { + logger.finest(String.format("Sending %d bytes to %s.", buffer.length, sink)); + sink.process(buffer); + logger.finest(String.format("Sent %d bytes to %s.", buffer.length, sink)); + } catch (IOException ioe1) { + throw new IOException(String.format("I/O error while writing to %s", sink), ioe1); + } return null; } };