RLPark 1.0.0
Reinforcement Learning Framework in Java

DiscoLogger.java

Go to the documentation of this file.
00001 package rlpark.plugin.robot.internal.disco;
00002 
00003 import java.io.BufferedOutputStream;
00004 import java.io.FileOutputStream;
00005 import java.io.IOException;
00006 import java.io.ObjectOutputStream;
00007 
00008 import rlpark.plugin.robot.internal.disco.io.DiscoPacket;
00009 import rlpark.plugin.robot.internal.disco.io.DiscoSocket;
00010 import zephyr.plugin.core.api.signals.Listener;
00011 
00012 public class DiscoLogger {
00013   public static final String Extension = "discobin";
00014   private final Listener<DiscoPacket> packetListener = new Listener<DiscoPacket>() {
00015     @Override
00016     public void listen(DiscoPacket eventInfo) {
00017       writePacket(eventInfo);
00018     }
00019   };
00020   private ObjectOutputStream objout;
00021 
00022   public DiscoLogger(String name, boolean append) throws IOException {
00023     objout = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(name, append)));
00024   }
00025 
00026   public void connectTo(DiscoSocket socket) {
00027     socket.onPacket.connect(packetListener);
00028   }
00029 
00030   public void connectTo(DiscoConnection connection) {
00031     connection.addPacketListener(packetListener);
00032   }
00033 
00034   synchronized protected void writePacket(DiscoPacket packet) {
00035     if (objout == null)
00036       return;
00037     try {
00038       objout.writeObject(packet);
00039       objout.flush();
00040       objout.reset();
00041     } catch (IOException e) {
00042       e.printStackTrace();
00043       close();
00044     }
00045   }
00046 
00047   synchronized public void close() {
00048     if (objout == null)
00049       return;
00050     try {
00051       objout.close();
00052     } catch (IOException e) {
00053       e.printStackTrace();
00054     }
00055     objout = null;
00056   }
00057 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark