From 1b3300740ea472da180fbe8a9777ba6124face18 Mon Sep 17 00:00:00 2001
From: Mike Bailey <jmbailey@nps.edu>
Date: Tue, 10 Sep 2019 13:05:41 -0700
Subject: [PATCH] Add raw listener api

---
 .../dis7/util/playerrecorder/Player.java      | 28 ++++++++++++++++---
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/src/edu/nps/moves/dis7/util/playerrecorder/Player.java b/src/edu/nps/moves/dis7/util/playerrecorder/Player.java
index 9dfba9d4bd..f75134b99c 100644
--- a/src/edu/nps/moves/dis7/util/playerrecorder/Player.java
+++ b/src/edu/nps/moves/dis7/util/playerrecorder/Player.java
@@ -19,6 +19,9 @@ import static edu.nps.moves.dis7.util.playerrecorder.Recorder.*;
 
 public class Player
 {
+  public interface RawListener {
+    void receiveBytes(byte[] ba);
+  }
   private Path disLogDirectory;
   private String ip;
   private int port;
@@ -44,7 +47,17 @@ public class Player
   private BufferedReader brdr;
   private Long startNanoTime = null;
   private boolean paused = false;
+  private boolean netSend = true;
+  private RawListener rawListener = null;
   
+  public void sendToNet(boolean tf)
+  {
+    netSend = tf;
+  }
+  public void addRawListener(RawListener lis)
+  {
+    rawListener = lis;
+  }
   @SuppressWarnings("StatementWithEmptyBody")
   public void begin()
   {
@@ -63,7 +76,8 @@ public class Player
       });
       //Arrays.sort(fs, Comparator.comparing(File::getName));
 
-      dsock = new DatagramSocket();
+      if(netSend)
+        dsock = new DatagramSocket();
       Base64.Decoder decdr = Base64.getDecoder();
       
       for (File f : fs) {
@@ -110,9 +124,13 @@ public class Player
             
             byte[] buffer = decdr.decode(sa[1]);
             
-            DatagramPacket packet = new DatagramPacket(buffer, buffer.length, addr, port);
-            dsock.send(packet);
-            
+            if(netSend) {
+              DatagramPacket packet = new DatagramPacket(buffer, buffer.length, addr, port);
+              dsock.send(packet);
+            }
+            if(rawListener != null) {
+              rawListener.receiveBytes(buffer);
+            }
             pduCount++;
             if (scenarioPduCount != null)
               scenarioPduCount++;
@@ -125,6 +143,8 @@ public class Player
         }
         brdr.close();
       }
+      if(rawListener != null)
+        rawListener.receiveBytes(null); // indicate the end
     }
     catch (Exception ex) {
       System.err.println("Exception reading/writing pdus: "+ex.getClass().getSimpleName()+": "+ex.getLocalizedMessage());
-- 
GitLab