RLPark 1.0.0
Reinforcement Learning Framework in Java

MessageJob.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 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 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark