RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 package rlpark.plugin.rltoys.experiments.scheduling.internal.messages; 00002 00003 import java.io.ByteArrayOutputStream; 00004 import java.io.IOException; 00005 import java.io.InputStream; 00006 00007 import rlpark.plugin.rltoys.experiments.scheduling.internal.messages.Messages.MessageType; 00008 00009 public class MessageClassData extends Message { 00010 private final String className; 00011 private final byte[] classData; 00012 00013 public MessageClassData(String className) { 00014 super(MessageType.ClassData); 00015 this.className = className; 00016 classData = null; 00017 } 00018 00019 protected MessageClassData(MessageBinary message) { 00020 super(message); 00021 className = null; 00022 classData = message.content(); 00023 } 00024 00025 @Override 00026 protected void writeContentBuffer(ByteArrayOutputStream out) throws IOException { 00027 String classAsPath = className.replace('.', '/') + ".class"; 00028 try { 00029 Class<?> classRef = Class.forName(className); 00030 ClassLoader localClassLoader = classRef.getClassLoader(); 00031 if (localClassLoader == null) 00032 return; 00033 InputStream stream = localClassLoader.getResourceAsStream(classAsPath); 00034 out.write(IOUtils.toByteArray(stream)); 00035 } catch (ClassNotFoundException e) { 00036 throw new RuntimeException(e); 00037 } 00038 } 00039 00040 public byte[] classData() { 00041 return classData; 00042 } 00043 }