package code.google.nfs.rpc.benchmark; import java.util.ArrayList; import java.util.List; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.Serializer; /** * Kryo Utils * * @author <a href="mailto:jlusdy@gmail.com">jlusdy</a> */ public class KryoUtils { @SuppressWarnings("rawtypes") private static final List<Class> classList = new ArrayList<Class>(); @SuppressWarnings("rawtypes") private static final List<Serializer> serializerList = new ArrayList<Serializer>(); private static final List<Integer> idList = new ArrayList<Integer>(); private static final ThreadLocal<Kryo> kryos = new ThreadLocal<Kryo>() { protected Kryo initialValue() { Kryo kryo = new Kryo(); int size = idList.size(); for (int i = 0; i < size; i++) { kryo.register(classList.get(i), serializerList.get(i), idList.get(i)); } kryo.setRegistrationRequired(true); kryo.setReferences(false); return kryo; } }; /** * */ private KryoUtils() { } /** * @param className * @param serializer * @param id */ @SuppressWarnings("rawtypes") public static synchronized void registerClass(Class className, Serializer serializer, int id) { classList.add(className); serializerList.add(serializer); idList.add(id); } /** * @return */ public static Kryo getKryo() { return kryos.get(); } }