RLPark 1.0.0
Reinforcement Learning Framework in Java
|
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 }