Mercurial > hg > FederatedLinda
view src/fdl/multiengine/TupleClassLoader.java @ 115:847b864b1c89
multiengine
author | kazz |
---|---|
date | Tue, 12 Oct 2010 18:13:45 +0900 |
parents | |
children |
line wrap: on
line source
package fdl.multiengine; import java.nio.ByteBuffer; import com.google.protobuf.InvalidProtocolBufferException; import fdl.MetaEngine; import fdl.MetaLinda; import fdl.protobuf.TupleClass.ClassFile; public class TupleClassLoader extends ClassLoader implements MetaEngine { public String name; private byte[] file; private Class<MetaEngine> clazz; @SuppressWarnings("unchecked") public TupleClassLoader(ByteBuffer protoc) { try { ClassFile classFile = ClassFile.parseFrom(protoc.array()); name = classFile.getName(); file = classFile.getFile().toByteArray(); clazz = (Class<MetaEngine>) findClass(name); } catch (InvalidProtocolBufferException e) { e.printStackTrace(); } } @Override public Class<?> findClass(String name) { return defineClass(name, file, 0, file.length); } public void mainLoop(MetaLinda ml) { @SuppressWarnings("rawtypes") Class[] parameter = { MetaLinda.class }; try { clazz.getMethod("mainLoop", parameter); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } }