package storm.kafka;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import backtype.storm.task.IMetricsContext;
import storm.kafka.KafkaConfig.StaticHosts;
public class StaticCoordinator implements PartitionCoordinator {
Map<GlobalPartitionId, PartitionManager> _managers = new HashMap<GlobalPartitionId, PartitionManager>();
List<PartitionManager> _allManagers = new ArrayList();
public StaticCoordinator(DynamicPartitionConnections connections, Map stormConf, SpoutConfig config, ZkState state, int taskIndex, int totalTasks, String topologyInstanceId) {
StaticHosts hosts = (StaticHosts) config.hosts;
List<GlobalPartitionId> allPartitionIds = new ArrayList();
for(HostPort h: hosts.hosts) {
for(int i=0; i<hosts.partitionsPerHost; i++) {
allPartitionIds.add(new GlobalPartitionId(h, i));
}
}
for(int i=taskIndex; i<allPartitionIds.size(); i+=totalTasks) {
GlobalPartitionId myPartition = allPartitionIds.get(i);
_managers.put(myPartition, new PartitionManager(connections, topologyInstanceId, state, stormConf, config, myPartition));
}
_allManagers = new ArrayList(_managers.values());
}
@Override
public List<PartitionManager> getMyManagedPartitions() {
return _allManagers;
}
public PartitionManager getManager(GlobalPartitionId id) {
return _managers.get(id);
}
}