package resa.optimize; import backtype.storm.generated.StormTopology; import resa.util.FixedSizeQueue; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Queue; /** * Created by ding on 14-4-30. */ class AggregatedData { public AggregatedData(StormTopology rawTopology, int historySize) { this.rawTopology = rawTopology; this.historySize = historySize; } private StormTopology rawTopology; private int historySize; public final Map<String, Queue<AggResult>> compHistoryResults = new HashMap<>(); public void putResult(String comp, AggResult[] exeAggResult) { AggResult aggResult = rawTopology.get_spouts().containsKey(comp) ? new SpoutAggResult() : new BoltAggResult(); AggResult.getCombinedResult(aggResult, Arrays.asList(exeAggResult)); compHistoryResults.computeIfAbsent(comp, (k) -> new FixedSizeQueue(historySize)).add(aggResult); } public void clear() { compHistoryResults.clear(); } }