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 import java.io.ObjectInputStream; 00007 import java.io.ObjectOutputStream; 00008 import java.util.List; 00009 00010 import rlpark.plugin.rltoys.experiments.scheduling.internal.messages.Messages.MessageType; 00011 00012 public class MessageJob extends Message { 00013 private Runnable[] jobs = new Runnable[] {}; 00014 private int[] jobIds = new int[] {}; 00015 00016 public MessageJob(int jobId, Runnable done) { 00017 super(MessageType.Job); 00018 jobIds = new int[] { jobId }; 00019 jobs = new Runnable[] { done }; 00020 } 00021 00022 public MessageJob(List<Runnable> jobs, List<Integer> jobIds) { 00023 super(MessageType.Job); 00024 assert jobIds.size() == jobs.size(); 00025 this.jobIds = new int[jobIds.size()]; 00026 for (int i = 0; i < jobIds.size(); i++) 00027 this.jobIds[i] = jobIds.get(i); 00028 this.jobs = new Runnable[jobs.size()]; 00029 jobs.toArray(this.jobs); 00030 } 00031 00032 protected MessageJob(MessageBinary message, ClassLoader classLoader) throws IOException { 00033 super(message); 00034 readContent(message.contentInputStream(), classLoader); 00035 } 00036 00037 @Override 00038 protected void writeContentBuffer(ByteArrayOutputStream out) throws IOException { 00039 ObjectOutputStream objOut = new ObjectOutputStream(out); 00040 objOut.writeObject(jobIds); 00041 objOut.writeObject(jobs); 00042 } 00043 00044 private void readContent(InputStream in, ClassLoader classLoader) throws IOException { 00045 ObjectInputStream objIn = ClassLoading.createObjectInputStream(in, classLoader); 00046 try { 00047 jobIds = (int[]) objIn.readObject(); 00048 jobs = (Runnable[]) objIn.readObject(); 00049 } catch (ClassNotFoundException e) { 00050 throw new RuntimeException(e); 00051 } 00052 } 00053 00054 public int[] jobIds() { 00055 return jobIds; 00056 } 00057 00058 public Runnable[] jobs() { 00059 return jobs; 00060 } 00061 00062 public int nbJobs() { 00063 return jobs.length; 00064 } 00065 }