RLPark 1.0.0
Reinforcement Learning Framework in Java

MessageClassData.java

Go to the documentation of this file.
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 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark