diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java index 5385dab650b1ab89d227c2cd7d0d76b8c5f3d0fd..35674e8a3f976c3bacd4e0b0ef941301f2a3336e 100644 --- a/src/main/java/teetime/framework/Analysis.java +++ b/src/main/java/teetime/framework/Analysis.java @@ -35,6 +35,7 @@ import teetime.framework.pipe.UnboundedSpScPipeFactory; import teetime.framework.signal.InitializingSignal; import teetime.framework.signal.ValidatingSignal; import teetime.framework.validation.AnalysisNotValidException; +import teetime.util.Connection; import teetime.util.Pair; /** @@ -177,15 +178,15 @@ public final class Analysis<T extends AnalysisConfiguration> implements Uncaught private void instantiatePipes() { List<Stage> threadableStageJobs = configuration.getThreadableStageJobs(); - for (Pair<Pair<OutputPort, InputPort>, Integer> connection : configuration.getConnections()) { - if (threadableStageJobs.contains(connection.getFirst().getSecond().getOwningStage())) { - if (connection.getSecond() != 0) { - interBoundedThreadPipeFactory.create(connection.getFirst().getFirst(), connection.getFirst().getSecond(), connection.getSecond()); + for (Connection connection : configuration.getConnections()) { + if (threadableStageJobs.contains(connection.getTargetPort().getOwningStage())) { + if (connection.getCapacity() != 0) { + interBoundedThreadPipeFactory.create(connection.getSourcePort(), connection.getTargetPort(), connection.getCapacity()); } else { - interUnboundedThreadPipeFactory.create(connection.getFirst().getFirst(), connection.getFirst().getSecond(), connection.getSecond()); + interUnboundedThreadPipeFactory.create(connection.getSourcePort(), connection.getTargetPort(), connection.getCapacity()); } } else { - intraThreadPipeFactory.create(connection.getFirst().getFirst(), connection.getFirst().getSecond()); + intraThreadPipeFactory.create(connection.getSourcePort(), connection.getTargetPort()); } } } diff --git a/src/main/java/teetime/framework/AnalysisConfiguration.java b/src/main/java/teetime/framework/AnalysisConfiguration.java index ac0b85b1862e14affb829299b4d19a8cf9fede9b..9755a33c8ce7334976298d600c74f2d1275fdeba 100644 --- a/src/main/java/teetime/framework/AnalysisConfiguration.java +++ b/src/main/java/teetime/framework/AnalysisConfiguration.java @@ -23,7 +23,7 @@ import teetime.framework.pipe.IPipeFactory; import teetime.framework.pipe.PipeFactoryRegistry; import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering; import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication; -import teetime.util.Pair; +import teetime.util.Connection; /** * Represents a configuration of connected stages, which is needed to run a analysis. @@ -32,7 +32,7 @@ import teetime.util.Pair; public abstract class AnalysisConfiguration { private final List<Stage> threadableStageJobs = new LinkedList<Stage>(); - private final List<Pair<Pair<OutputPort, InputPort>, Integer>> connections = new LinkedList<Pair<Pair<OutputPort, InputPort>, Integer>>(); + private final List<Connection> connections = new LinkedList<Connection>(); @SuppressWarnings("deprecation") private static final PipeFactoryRegistry PIPE_FACTORY_REGISTRY = PipeFactoryRegistry.INSTANCE; @@ -150,8 +150,7 @@ public abstract class AnalysisConfiguration { } protected <T> void connectPorts(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort, final int capacity) { - connections.add(new Pair(new Pair<OutputPort, InputPort>(sourcePort, targetPort), capacity)); - + connections.add(new Connection(sourcePort, targetPort, capacity)); } /** @@ -159,7 +158,7 @@ public abstract class AnalysisConfiguration { * * @return a list of pairs of Out- and InputPorts, which are connected */ - protected List<Pair<Pair<OutputPort, InputPort>, Integer>> getConnections() { + protected List<Connection> getConnections() { return connections; } diff --git a/src/main/java/teetime/util/Connection.java b/src/main/java/teetime/util/Connection.java new file mode 100644 index 0000000000000000000000000000000000000000..f66d2c2a4ebf90b788fdccd2e5b750721d92c19c --- /dev/null +++ b/src/main/java/teetime/util/Connection.java @@ -0,0 +1,34 @@ +package teetime.util; + +import teetime.framework.InputPort; +import teetime.framework.OutputPort; + +public class Connection<T> { + + private final OutputPort<? extends T> sourcePort; + private final InputPort<T> targetPort; + private final int capacity; + + public Connection(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort) { + this(sourcePort, targetPort, 4); + } + + public Connection(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort, final int capacity) { + this.sourcePort = sourcePort; + this.targetPort = targetPort; + this.capacity = capacity; + } + + public int getCapacity() { + return capacity; + } + + public OutputPort<? extends T> getSourcePort() { + return sourcePort; + } + + public InputPort<T> getTargetPort() { + return targetPort; + } + +} diff --git a/src/main/java/teetime/util/Pair.java b/src/main/java/teetime/util/Pair.java index 96ea6a61df295677dec8ce450d7cd16da5643dbb..dda9883445c63c766e7e3b639bbeae16996c88c0 100644 --- a/src/main/java/teetime/util/Pair.java +++ b/src/main/java/teetime/util/Pair.java @@ -15,6 +15,15 @@ */ package teetime.util; +/** + * + * @param <F> + * @param <S> + * + * @deprecated since 1.2 + */ +@Deprecated +// See http://stackoverflow.com/questions/156275/what-is-the-equivalent-of-the-c-pairl-r-in-java public final class Pair<F, S> { private final F first;