package com.xcompwiz.lookingglass.imc;
import java.util.HashMap;
import java.util.Map;
import com.google.common.collect.ImmutableList;
import com.xcompwiz.lookingglass.log.LoggerUtils;
import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage;
public class IMCHandler {
public interface IMCProcessor {
public void process(IMCMessage message);
}
private static Map<String, IMCProcessor> processors = new HashMap<String, IMCProcessor>();
static {
registerProcessor("api", new IMCAPIRegister());
}
private static void registerProcessor(String key, IMCProcessor processor) {
processors.put(key.toLowerCase(), processor);
}
public static void process(ImmutableList<IMCMessage> messages) {
for (IMCMessage message : messages) {
String key = message.key.toLowerCase();
IMCProcessor process = processors.get(key);
if (process == null) {
LoggerUtils.error("IMC message '%s' from [%s] unrecognized", key, message.getSender());
}
try {
process.process(message);
} catch (Exception e) {
LoggerUtils.error("Failed to process IMC message '%s' from [%s]", key, message.getSender());
e.printStackTrace();
}
}
}
}