From 8778aea0af61039a2aeefbdc9ebedac5cacb24e5 Mon Sep 17 00:00:00 2001
From: brutzman <brutzman@nps.edu>
Date: Wed, 22 Jun 2022 21:27:55 -0700
Subject: [PATCH] small refinements in logging

---
 .../DisThreadedNetworkInterface.java          | 27 ++++++++++++-------
 ...DisThreadedNetworkInterfaceSelfTestLog.txt | 16 ++++++-----
 2 files changed, 26 insertions(+), 17 deletions(-)

diff --git a/src/edu/nps/moves/dis7/utilities/DisThreadedNetworkInterface.java b/src/edu/nps/moves/dis7/utilities/DisThreadedNetworkInterface.java
index 588cddc7c8..12eb889412 100644
--- a/src/edu/nps/moves/dis7/utilities/DisThreadedNetworkInterface.java
+++ b/src/edu/nps/moves/dis7/utilities/DisThreadedNetworkInterface.java
@@ -553,17 +553,24 @@ public class DisThreadedNetworkInterface
     }
 
     /** Tell sendingThread and receiveThread to stop. */
-    public void setKillSentinelAndInterrupts()
-    {
-      killed = true; // set loop sentinel for threads to finish
-      
-      // https://stackoverflow.com/questions/26647840/how-do-i-interrupt-kill-a-hung-thread-in-java
-      sendingThread.interrupt();
-      receiveThread.interrupt();
-      if (hasVerboseOutput())
+    public synchronized void setKillSentinelAndInterrupts()
+    {
+        sleep(1000l); // finish sending, receiving
+        System.out.flush();
+        System.err.flush();
+        killed = true; // set loop sentinel for threads to finish
+
+        // https://stackoverflow.com/questions/26647840/how-do-i-interrupt-kill-a-hung-thread-in-java
+        sendingThread.interrupt();
+        receiveThread.interrupt();
+        if (hasVerboseOutput())
+        {
             System.out.println ("*** setKillSentinelAndInterrupts() killed=" + killed + 
-                    " sendingThread.isInterrupted()=" + sendingThread.isInterrupted() + 
-                    " receiveThread.isInterrupted()=" + receiveThread.isInterrupted());
+                      " sendingThread.isInterrupted()=" + sendingThread.isInterrupted() + 
+                      " receiveThread.isInterrupted()=" + receiveThread.isInterrupted());
+            System.out.flush();
+            System.err.flush();
+        }
     }
 
     /** Terminate the instance after completion of pending send/receive activity.
diff --git a/src/edu/nps/moves/dis7/utilities/DisThreadedNetworkInterfaceSelfTestLog.txt b/src/edu/nps/moves/dis7/utilities/DisThreadedNetworkInterfaceSelfTestLog.txt
index d13d821d37..2b4c486497 100644
--- a/src/edu/nps/moves/dis7/utilities/DisThreadedNetworkInterfaceSelfTestLog.txt
+++ b/src/edu/nps/moves/dis7/utilities/DisThreadedNetworkInterfaceSelfTestLog.txt
@@ -1,9 +1,11 @@
-ant -f C:\\x3d-github\\open-dis7-java -Dnb.internal.action.name=run.single -Djavac.includes=edu/nps/moves/dis7/utilities/DisThreadedNetworkInterface.java -Drun.class=edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface run-single
+ant -f C:\\x3d-github\\opendis7-java -Dnb.internal.action.name=run.single -Djavac.includes=edu/nps/moves/dis7/utilities/DisThreadedNetworkInterface.java -Drun.class=edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface run-single
 init:
-Deleting: C:\x3d-github\open-dis7-java\build\built-jar.properties
+Deleting: C:\x3d-github\opendis7-java\build\built-jar.properties
 deps-jar:
-Updating property file: C:\x3d-github\open-dis7-java\build\built-jar.properties
-Compiling 1 source file to C:\x3d-github\open-dis7-java\build\classes
+Updating property file: C:\x3d-github\opendis7-java\build\built-jar.properties
+Compiling 1 source file to C:\x3d-github\opendis7-java\build\classes
+warning: [options] bootstrap class path not set in conjunction with -source 8
+1 warning
 compile-single:
 run-single:
 [DisThreadedNetworkInterface] main() started...
@@ -13,14 +15,14 @@ run-single:
 [DisThreadedNetworkInterface main() self test] createThreads() sendingThread.isAlive()=true
 [DisThreadedNetworkInterface main() self test] main() self test initialized...
 [DisThreadedNetworkInterface main() self test] self test sending espdu...
+[DisThreadedNetworkInterface main() self test] [sending  1] DisPduType 01 ENTITY_STATE   self test, size 144 bytes)
 [DisThreadedNetworkInterface main() self test] [receipt  1] DisPduType 01 ENTITY_STATE   self test, size 144 bytes)
 [DisThreadedNetworkInterface main() self test] main() pduListener.incomingPdu() received newPdu DisPduType 01 ENTITY_STATE
-[DisThreadedNetworkInterface main() self test] [sending  1] DisPduType 01 ENTITY_STATE   self test, size 144 bytes)
-*** setKillSentinelAndInterrupts() killed=true sendingThread.isInterrupted()=true receiveThread.isInterrupted()=true
+*** setKillSentinelAndInterrupts() killed=true sendingThread.isInterrupted()=false receiveThread.isInterrupted()=true
 [DisThreadedNetworkInterface main() self test] close(): pdus2send.size()=0 baos.size()=0 dos.size()=144
 [DisThreadedNetworkInterface main() self test] datagramSocket.leaveGroup address=239.1.2.3 port=3000 isClosed()=true close() complete.
 *** killThread() status: sendingThread.isAlive()=false sendingThread.isInterrupted()=true
 *** killThread() status: receiveThread.isAlive()=false receiveThread.isInterrupted()=true
 *** Thread close status: sendingThread.isAlive()=false receiveThread.isAlive()=false
 [DisThreadedNetworkInterface] main() self test complete.
-BUILD SUCCESSFUL (total time: 2 seconds)
+BUILD SUCCESSFUL (total time: 3 seconds)
-- 
GitLab