RLPark 1.0.0
Reinforcement Learning Framework in Java

MessageBinary.java

Go to the documentation of this file.
00001 package rlpark.plugin.rltoys.experiments.scheduling.internal.messages;
00002 
00003 import static rlpark.plugin.rltoys.experiments.scheduling.internal.messages.Messages.Header;
00004 import static rlpark.plugin.rltoys.experiments.scheduling.internal.messages.Messages.HeaderSize;
00005 
00006 import java.io.ByteArrayInputStream;
00007 import java.io.DataInputStream;
00008 import java.io.IOException;
00009 import java.io.InputStream;
00010 
00011 import rlpark.plugin.rltoys.experiments.scheduling.internal.messages.Messages.MessageType;
00012 
00013 public class MessageBinary extends Message {
00014   private int fullSizeRead;
00015   private byte[] content;
00016 
00017   public MessageBinary() {
00018     super(MessageType.Error);
00019   }
00020 
00021   private void throwAlignmentError() {
00022     throw new RuntimeException("Alignment error");
00023   }
00024 
00025   private void readHeader(InputStream in) throws IOException {
00026     DataInputStream dataIn = new DataInputStream(in);
00027     if (dataIn.readByte() != Header[0])
00028       throwAlignmentError();
00029     if (dataIn.readByte() != Header[1])
00030       throwAlignmentError();
00031     if (dataIn.readByte() != Header[2])
00032       throwAlignmentError();
00033     fullSizeRead = dataIn.readInt();
00034     type = Messages.MessageType.values()[dataIn.readInt()];
00035   }
00036 
00037   public void read(InputStream inputStream) throws IOException {
00038     readHeader(inputStream);
00039     content = new byte[fullSizeRead - HeaderSize];
00040     int dataToRead = content.length;
00041     while (dataToRead > 0) {
00042       int dataRead = inputStream.read(content, content.length - dataToRead, dataToRead);
00043       dataToRead -= dataRead;
00044     }
00045   }
00046 
00047   public byte[] content() {
00048     return content;
00049   }
00050 
00051   public InputStream contentInputStream() {
00052     return new ByteArrayInputStream(content);
00053   }
00054 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark