package uk.ac.imperial.lsds.seep.comm.serialization;
import uk.ac.imperial.lsds.seep.comm.protocol.MasterWorkerProtocolAPI;
import uk.ac.imperial.lsds.seep.comm.protocol.WorkerWorkerProtocolAPI;
import com.esotericsoftware.kryo.Kryo;
public class KryoFactory {
public static Kryo buildKryo(){
return new Kryo();
}
public static Kryo buildKryoWithRegistration(Object... classToRegister){
Kryo k = new Kryo();
int registrationId = 0;
for(Object o : classToRegister){
k.register(o.getClass(), registrationId);
registrationId++;
}
return k;
}
public static Kryo buildKryoWithRegistration(ClassLoader cl, Object... classToRegister){
Kryo k = new Kryo();
int registrationId = 0;
for(Object o : classToRegister){
k.register(o.getClass(), registrationId);
registrationId++;
}
k.setClassLoader(cl);
return k;
}
public static Kryo buildKryoForProtocolCommands(ClassLoader cl){
Kryo k = new Kryo();
for(MasterWorkerProtocolAPI command : MasterWorkerProtocolAPI.values()){
k.register(command.getClass(), command.type());
}
for(WorkerWorkerProtocolAPI command : WorkerWorkerProtocolAPI.values()){
k.register(command.getClass(), command.type());
}
k.setClassLoader(cl);
return k;
}
}