Store the connections per filter.
[sonitus.git] / src / main / java / net / pterodactylus / sonitus / data / filter / PipelineFilter.java
index 59e34be..638df00 100644 (file)
@@ -21,6 +21,7 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 import net.pterodactylus.sonitus.data.AbstractFilter;
 import net.pterodactylus.sonitus.data.DataPacket;
@@ -28,9 +29,8 @@ import net.pterodactylus.sonitus.data.Filter;
 import net.pterodactylus.sonitus.data.Metadata;
 import net.pterodactylus.sonitus.data.Pipeline.Connection;
 
-import com.google.common.base.Function;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 
 /**
  * {@link Filter} that combines several filters into one.
@@ -48,6 +48,9 @@ public class PipelineFilter extends AbstractFilter implements Filter {
        /** The last filter (for convenience). */
        private final Filter lastFilter;
 
+       /** The connections for each filter. */
+       private final Map<Filter, Connection> filterConnections = Maps.newHashMap();
+
        /**
         * Creates a new pipeline filter.
         *
@@ -84,13 +87,8 @@ public class PipelineFilter extends AbstractFilter implements Filter {
                        filter.open(currentMetadata);
                        currentMetadata = filter.metadata();
                        Connection connection = new Connection(currentSource, Arrays.asList(filter));
-                       String threadName = String.format("%s → %s.", connection.source().name(), FluentIterable.from(connection.sinks()).transform(new Function<Filter, String>() {
-
-                               @Override
-                               public String apply(Filter sink) {
-                                       return sink.name();
-                               }
-                       }));
+                       filterConnections.put(filter, connection);
+                       String threadName = String.format("%s → %s", connection.source().name(), filter.name());
                        new Thread(connection, threadName).start();
                        currentSource = filter;
                }