package resa.optimize;
import backtype.storm.generated.StormTopology;
import java.util.Map;
/**
* Note: All the methods in this class will be invoked in the same thread, so it is not need to calc
* them synchronized.
* Created by ding on 14-4-30.
*/
public abstract class AllocCalculator {
protected StormTopology rawTopology;
protected Map<String, Object> conf;
protected Map<String, Integer> currAllocation;
/**
* Called when a new instance was created.
*
* @param conf
* @param rawTopology
*/
public void init(Map<String, Object> conf, Map<String, Integer> currAllocation, StormTopology rawTopology) {
this.conf = conf;
this.rawTopology = rawTopology;
this.currAllocation = currAllocation;
}
/**
* This method will be invoked only when currAllocation was changed.
*
* @param newAllocation
*/
public void allocationChanged(Map<String, Integer> newAllocation) {
this.currAllocation = newAllocation;
}
public abstract AllocResult calc(Map<String, AggResult[]> executorAggResults, int maxAvailableExecutors);
}