Skip to content
Snippets Groups Projects
Commit accbd140 authored by Brutzman, Don's avatar Brutzman, Don
Browse files

improved logging and network threading, release version update

parent 303ba0f3
No related branches found
No related tags found
No related merge requests found
...@@ -24,8 +24,15 @@ import java.util.logging.Logger; ...@@ -24,8 +24,15 @@ import java.util.logging.Logger;
*/ */
public class ExampleSimulationProgram public class ExampleSimulationProgram
{ {
private boolean verboseComments = true;
static final String NETWORK_ADDRESS_DEFAULT = "239.1.2.3";
static final int NETWORK_PORT_DEFAULT = 3000;
static String networkAddress = NETWORK_ADDRESS_DEFAULT;
static int networkPort = NETWORK_PORT_DEFAULT;
String DEFAULT_OUTPUT_DIRECTORY = "./pduLog";
/** /**
* This runSimulation() method is for you, a * This runSimulationLoops() method is for you, a
* programmer-modifiable method for defining and running a new simulation of interest. * programmer-modifiable method for defining and running a new simulation of interest.
* Welcome! Other parts of this program handle bookkeeping and plumbing tasks so that * Welcome! Other parts of this program handle bookkeeping and plumbing tasks so that
* you can focus on your model entities and activities. * you can focus on your model entities and activities.
...@@ -37,7 +44,7 @@ public class ExampleSimulationProgram ...@@ -37,7 +44,7 @@ public class ExampleSimulationProgram
* interesting, even helpful, but don't really have to worry about. * interesting, even helpful, but don't really have to worry about.
*/ */
@SuppressWarnings("SleepWhileInLoop") // yes we do that @SuppressWarnings("SleepWhileInLoop") // yes we do that
public void runSimulation () public void runSimulationLoops ()
{ {
try try
{ {
...@@ -134,8 +141,7 @@ public class ExampleSimulationProgram ...@@ -134,8 +141,7 @@ public class ExampleSimulationProgram
} }
} }
/* **************************** infrastructure code, modification is seldom needed ************************* */ /* **************************** infrastructure code, modification is seldom needed ************************* */
private boolean verboseComments = true;
String narrativeMessage1 = new String(); String narrativeMessage1 = new String();
String narrativeMessage2 = new String(); String narrativeMessage2 = new String();
String narrativeMessage3 = new String(); String narrativeMessage3 = new String();
...@@ -154,15 +160,11 @@ public class ExampleSimulationProgram ...@@ -154,15 +160,11 @@ public class ExampleSimulationProgram
private final static String TRACE_PREFIX = "[" + ExampleSimulationProgram.class.getName() + "] "; private final static String TRACE_PREFIX = "[" + ExampleSimulationProgram.class.getName() + "] ";
// class variables // class variables
PduFactory pduFactory = new PduFactory(); PduFactory pduFactory = new PduFactory();
DisThreadedNetworkInterface disNetworkInterface; DisThreadedNetworkInterface disNetworkInterface;
DisThreadedNetworkInterface.PduListener pduListener; DisThreadedNetworkInterface.PduListener pduListener;
Pdu receivedPdu; Pdu receivedPdu;
PduRecorder pduRecorder;
static final String NETWORK_ADDRESS_DEFAULT = "239.1.2.3";
static final int NETWORK_PORT_DEFAULT = 3000;
static String networkAddress = NETWORK_ADDRESS_DEFAULT;
static int networkPort = NETWORK_PORT_DEFAULT;
/** /**
* Constructor design goal: additional built-in initialization conveniences can go here * Constructor design goal: additional built-in initialization conveniences can go here
...@@ -223,6 +225,7 @@ public class ExampleSimulationProgram ...@@ -223,6 +225,7 @@ public class ExampleSimulationProgram
public void setUpNetworkInterface() public void setUpNetworkInterface()
{ {
disNetworkInterface = new DisThreadedNetworkInterface(getNetworkAddress(), getNetworkPort()); disNetworkInterface = new DisThreadedNetworkInterface(getNetworkAddress(), getNetworkPort());
disNetworkInterface.setDescriptor ("ExampleSimulationProgram pdu looping");
System.out.println("Network confirmation:" + System.out.println("Network confirmation:" +
" address=" + disNetworkInterface.getAddress()+ // disNetworkInterface.getMulticastGroup() + " address=" + disNetworkInterface.getAddress()+ // disNetworkInterface.getMulticastGroup() +
...@@ -237,11 +240,19 @@ public class ExampleSimulationProgram ...@@ -237,11 +240,19 @@ public class ExampleSimulationProgram
} }
}; };
disNetworkInterface.addListener(pduListener); disNetworkInterface.addListener(pduListener);
String outputDirectory = DEFAULT_OUTPUT_DIRECTORY;
System.out.println("Beginning pdu save to directory " + outputDirectory);
pduRecorder = new PduRecorder(outputDirectory, getNetworkAddress(), getNetworkPort()); // assumes save
pduRecorder.setDescriptor ("ExampleSimulationProgram pduRecorder");
pduRecorder.start(); // begin running
} }
/** All done, release network resources */ /** All done, release network resources */
public void tearDownNetworkInterface() public void tearDownNetworkInterface()
{ {
pduRecorder.stop();
disNetworkInterface.removeListener(pduListener); disNetworkInterface.removeListener(pduListener);
disNetworkInterface.close(); disNetworkInterface.close();
...@@ -351,16 +362,9 @@ public class ExampleSimulationProgram ...@@ -351,16 +362,9 @@ public class ExampleSimulationProgram
// OK here we go... // OK here we go...
thisProgram.setUpNetworkInterface(); thisProgram.setUpNetworkInterface();
String DEFAULT_OUTPUT_DIRECTORY = "./pduLog";
String outputDirectory = DEFAULT_OUTPUT_DIRECTORY;
System.out.println("Beginning pdu save to directory " + outputDirectory);
PduRecorder pduRecorder = new PduRecorder(outputDirectory, networkAddress, networkPort); // assumes save
thisProgram.runSimulation (); // ... your simulation execution code goes in there ... thisProgram.runSimulationLoops (); // ... your simulation execution code goes in there ...
pduRecorder.end();
thisProgram.tearDownNetworkInterface(); // make sure no processes are left lingering thisProgram.tearDownNetworkInterface(); // make sure no processes are left lingering
System.out.println(TRACE_PREFIX + "complete."); // report successful completion System.out.println(TRACE_PREFIX + "complete."); // report successful completion
......
...@@ -7,94 +7,92 @@ Compiling 1 source file to C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\buil ...@@ -7,94 +7,92 @@ Compiling 1 source file to C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\buil
compile-single: compile-single:
run-single: run-single:
[OpenDis7Examples.ExampleSimulationProgram] started... [OpenDis7Examples.ExampleSimulationProgram] started...
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] Using network interface Intel(R) Centrino(R) Ultimate-N 6300 AGN [DisThreadedNetworkInterface] using network interface Intel(R) Centrino(R) Ultimate-N 6300 AGN
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] datagramSocket.joinGroup address=239.1.2.3 port=3000 [DisThreadedNetworkInterface] datagramSocket.joinGroup address=239.1.2.3 port=3000 start() complete
Network confirmation: address=239.1.2.3 port=3000 Network confirmation: address=239.1.2.3 port=3000
Beginning pdu save to directory ./pduLog Beginning pdu save to directory ./pduLog
Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog2.dislog Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog42.dislog
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] Using network interface Intel(R) Centrino(R) Ultimate-N 6300 AGN [DisThreadedNetworkInterface] using network interface Intel(R) Centrino(R) Ultimate-N 6300 AGN
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] datagramSocket.joinGroup address=239.1.2.3 port=3000 [DisThreadedNetworkInterface] datagramSocket.joinGroup address=239.1.2.3 port=3000 start() complete
class edu.nps.moves.dis7.utilities.stream.PduRecorder listening to IP address 239.1.2.3 on port 3000 [PduRecorder ExampleSimulationProgram pduRecorder] listening to IP address 239.1.2.3 on port 3000
... My simulation just did something, no really... ... My simulation just did something, no really...
... [Pausing for 1.0 seconds] ... [Pausing for 1.0 seconds]
sending PDUs for simulation step 1, monitor loopback to confirm sent sending PDUs for simulation step 1, monitor loopback to confirm sent
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 1] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 1] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 1] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 1] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 1] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 1] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 2] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 2] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 2] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 2] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 2] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 2] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 3] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 3] DisPduType 22 COMMENT, size 104 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 3] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 3] DisPduType 22 COMMENT, size 104 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 3] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 3] DisPduType 22 COMMENT, size 104 bytes)
*** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 1] *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 1]
... [PDUs successfully sent for this loop] ... [PDUs successfully sent for this loop]
... My simulation just did something, no really... ... My simulation just did something, no really...
... [Pausing for 1.0 seconds] ... [Pausing for 1.0 seconds]
sending PDUs for simulation step 2, monitor loopback to confirm sent sending PDUs for simulation step 2, monitor loopback to confirm sent
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 4] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 4] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 4] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 4] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 4] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 4] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 5] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 5] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 5] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 5] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 5] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 5] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 6] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 6] DisPduType 22 COMMENT, size 104 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 6] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 6] DisPduType 22 COMMENT, size 104 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 6] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 6] DisPduType 22 COMMENT, size 104 bytes)
*** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 2] *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 2]
... [PDUs successfully sent for this loop] ... [PDUs successfully sent for this loop]
... My simulation just did something, no really... ... My simulation just did something, no really...
... [Pausing for 1.0 seconds] ... [Pausing for 1.0 seconds]
sending PDUs for simulation step 3, monitor loopback to confirm sent sending PDUs for simulation step 3, monitor loopback to confirm sent
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 7] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 7] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 7] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 7] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 7] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 7] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 8] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 8] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 8] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 8] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 8] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 8] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 9] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 9] DisPduType 22 COMMENT, size 104 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 9] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 9] DisPduType 22 COMMENT, size 104 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 9] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 9] DisPduType 22 COMMENT, size 104 bytes)
*** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 3] *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 3]
... [PDUs successfully sent for this loop] ... [PDUs successfully sent for this loop]
... My simulation just did something, no really... ... My simulation just did something, no really...
... [Pausing for 1.0 seconds] ... [Pausing for 1.0 seconds]
sending PDUs for simulation step 4, monitor loopback to confirm sent sending PDUs for simulation step 4, monitor loopback to confirm sent
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 10] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 10] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 10] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 10] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 10] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 10] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 11] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 11] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 11] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 11] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 11] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 11] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 12] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 12] DisPduType 22 COMMENT, size 104 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 12] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 12] DisPduType 22 COMMENT, size 104 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 12] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 12] DisPduType 22 COMMENT, size 104 bytes)
*** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 4] *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 4]
... [PDUs successfully sent for this loop] ... [PDUs successfully sent for this loop]
... My simulation just did something, no really... ... My simulation just did something, no really...
... [Pausing for 1.0 seconds] ... [Pausing for 1.0 seconds]
sending PDUs for simulation step 5, monitor loopback to confirm sent sending PDUs for simulation step 5, monitor loopback to confirm sent
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 13] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 13] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 13] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 13] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 13] DisPduType 01 ENTITY_STATE, size 144 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 13] DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 14] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 14] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 14] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 14] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 14] DisPduType 02 FIRE, size 96 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 14] DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 15] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 15] DisPduType 22 COMMENT, size 104 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 15] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 15] DisPduType 22 COMMENT, size 104 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 15] DisPduType 22 COMMENT, size 104 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 15] DisPduType 22 COMMENT, size 104 bytes)
*** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 5] *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 5]
... [PDUs successfully sent for this loop] ... [PDUs successfully sent for this loop]
... [Termination condition met, simulationComplete=true] ... [Termination condition met, simulationComplete=true]
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 16] DisPduType 22 COMMENT, size 120 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 16] DisPduType 22 COMMENT, size 120 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 16] DisPduType 22 COMMENT, size 120 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 16] DisPduType 22 COMMENT, size 120 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 16] DisPduType 22 COMMENT, size 120 bytes) [DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 16] DisPduType 22 COMMENT, size 120 bytes)
*** [Narrative comment sent: COMPLETE_EVENT_REPORT] [MV3500 ExampleSimulationProgram, runSimulation() completed successfully] *** [Narrative comment sent: COMPLETE_EVENT_REPORT] [MV3500 ExampleSimulationProgram, runSimulation() completed successfully]
... [final CommentPdu successfully sent for simulation] ... [final CommentPdu successfully sent for simulation]
Closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog2.dislog Closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog42.dislog
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] Exception in DisThreadedNetworkInterface receive thread: Socket closed [DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] datagramSocket.leaveGroup address=239.1.2.3 port=3000 stop() complete
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] Retrying new socket...
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] datagramSocket.leaveGroup address=239.1.2.3 port=3000
[OpenDis7Examples.ExampleSimulationProgram] complete. [OpenDis7Examples.ExampleSimulationProgram] complete.
BUILD SUCCESSFUL (total time: 11 seconds) BUILD SUCCESSFUL (total time: 11 seconds)
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
*/ */
package OpenDis7Examples; package OpenDis7Examples;
import edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface;
import edu.nps.moves.dis7.utilities.stream.PduRecorder; import edu.nps.moves.dis7.utilities.stream.PduRecorder;
import java.io.IOException;
import java.util.Scanner; import java.util.Scanner;
/** Class to leverage the {@link edu.nps.moves.dis7.utilities.stream.PduRecorder} /** Class to leverage the {@link edu.nps.moves.dis7.utilities.stream.PduRecorder}
...@@ -20,82 +20,117 @@ import java.util.Scanner; ...@@ -20,82 +20,117 @@ import java.util.Scanner;
*/ */
public class PduListenerSaver public class PduListenerSaver
{ {
private final static String DEFAULT_OUTPUT_DIRECTORY = "pduLog"; private final static String DEFAULT_OUTPUT_DIRECTORY = "pduLog";
/**
* Default multicast group address we send on. /** Default multicast group address <code>229.1.2.3</code> for send and receive connections.
* @see <a href="https://en.wikipedia.org/wiki/Multicast_address">https://en.wikipedia.org/wiki/Multicast_address</a> */ * @see <a href="https://en.wikipedia.org/wiki/Multicast_address">https://en.wikipedia.org/wiki/Multicast_address</a> */
public static final String DEFAULT_MULTICAST_ADDRESS = AllPduSender.DEFAULT_MULTICAST_ADDRESS; public static String DEFAULT_DIS_ADDRESS = DisThreadedNetworkInterface.DEFAULT_DIS_ADDRESS;
/** @see <a href="https://en.wikipedia.org/wiki/Port_(computer_networking)">https://en.wikipedia.org/wiki/Port_(computer_networking)</a> */
public static final int DEFAULT_MULTICAST_PORT = AllPduSender.DEFAULT_MULTICAST_PORT; /** Default socket port <code>3000</code>, matches Wireshark DIS capture default
* @see <a href="https://en.wikipedia.org/wiki/Port_(computer_networking)">https://en.wikipedia.org/wiki/Port_(computer_networking)</a> */
public static int DEFAULT_DIS_PORT = DisThreadedNetworkInterface.DEFAULT_DIS_PORT;
private enum mystate private enum mystate
{ {
RUNNING, RUNNING,
PAUSED; PAUSED;
} }
private String disAddress;
private int disPort;
/** /**
* Program invocation, execution starts here * Object constructor using default multicast address and port
*/
public PduListenerSaver()
{
this(DEFAULT_DIS_ADDRESS, DEFAULT_DIS_PORT);
}
/**
* Object constructor using specified multicast address and port
* @param address the multicast group or unicast address to utilize
* @param port the multicast port to utilize
*/
public PduListenerSaver(String address, int port)
{
disAddress = address;
disPort = port;
}
/**
* Command-line invocation (CLI), execution starts here
* @param args command-line arguments * @param args command-line arguments
*/ */
public static void main(String[] args) public static void main(String[] args)
{ {
String outputDirectory = DEFAULT_OUTPUT_DIRECTORY; String outputDirectory = DEFAULT_OUTPUT_DIRECTORY;
String multicastAddress = DEFAULT_MULTICAST_ADDRESS; String multicastAddress = DEFAULT_DIS_ADDRESS;
int multicastPort = DEFAULT_MULTICAST_PORT; int port = DEFAULT_DIS_PORT;
System.out.println("OpenDis7Examples.PduListenerSaver started..."); System.out.println("OpenDis7Examples.PduListenerSaver started...");
switch (args.length) switch (args.length)
{ {
case 0: case 0:
// use default values
break; break;
case 1: case 1:
outputDirectory = args[0]; outputDirectory = args[0];
break; break;
case 3: case 3:
outputDirectory = args[0]; outputDirectory = args[0];
multicastAddress = args[1]; multicastAddress = args[1];
multicastPort = Integer.parseInt(args[2]); port = Integer.parseInt(args[2]);
break; break;
default: default:
// Common-sense practice is to print help message if invocation is problematic // Common-sense practice is to print help message if invocation is problematic
System.err.println("Usage: PduListenerSaver() or PduListenerSaver(\"outputdir\") or PduListenerSaver(\"outputDirectory\",\"multicastAddress\", multicastPort"); System.err.println("Usage: PduListenerSaver() or PduListenerSaver(\"outputdir\") or PduListenerSaver(\"outputDirectory\",\"multicastAddress\", port");
System.exit(1); System.exit(1);
} }
System.out.println("Beginning PduListenerSaver (" + multicastAddress + ":" + multicastPort + ") to directory " + outputDirectory); System.out.println("Beginning PduListenerSaver (" + multicastAddress + ":" + port + ") to directory " + outputDirectory);
mystate state = mystate.RUNNING; mystate state = mystate.RUNNING;
Scanner terminalKeyboardScanner = new Scanner(System.in); Scanner terminalKeyboardScanner = new Scanner(System.in);
PduRecorder pduRecorder = new PduRecorder(outputDirectory, multicastAddress, multicastPort); // assumes save on quit PduRecorder pduRecorder = new PduRecorder(outputDirectory, multicastAddress, port); // assumes save
pduRecorder.setDescriptor("PduListenerSaver");
pduRecorder.start(); // begin running
while (true) // monitor user input via keyboard while (true) // monitor user input via keyboard
{ {
System.out.println("Type p/enter to pause, r/enter to resume, q/enter to quit"); System.out.println("Type p/enter to pause, r/enter to resume, q/enter to quit");
String line = terminalKeyboardScanner.nextLine(); String line = terminalKeyboardScanner.nextLine();
if (line.equalsIgnoreCase("p") && state == mystate.RUNNING) { if (line.equalsIgnoreCase("p") && state == mystate.RUNNING)
pduRecorder.stopPause(); {
pduRecorder.pause();
state = mystate.PAUSED; state = mystate.PAUSED;
System.out.println("... now PAUSED"); System.out.println("... state is now PAUSED");
} }
else if (line.equalsIgnoreCase("p")) { else if (line.equalsIgnoreCase("p"))
System.out.println("... still PAUSED"); {
pduRecorder.pause();
state = mystate.PAUSED;
System.out.println("... state is still PAUSED");
} }
else if (line.equalsIgnoreCase("r") && state == mystate.PAUSED) { else if (line.equalsIgnoreCase("r") && state == mystate.PAUSED)
pduRecorder.startResume(); {
pduRecorder.resume();
state = mystate.RUNNING; state = mystate.RUNNING;
System.out.println("... now RUNNING"); System.out.println("... state is now RUNNING");
} }
else if (line.equalsIgnoreCase("r")) { else if (line.equalsIgnoreCase("r"))
System.out.println("... still RUNNING"); {
pduRecorder.resume();
state = mystate.RUNNING;
System.out.println("... state is still RUNNING");
} }
else if (line.equalsIgnoreCase("q")) { else if (line.equalsIgnoreCase("q"))
{
pduRecorder.stop();
System.out.println("... QUIT"); System.out.println("... QUIT");
pduRecorder.end();
break; break;
} }
} }
System.out.println("Ending PduListenerSaver pdu recording, saved to file:"); System.out.println("Finished PduListenerSaver pdu recording, saved to file:");
System.out.println(pduRecorder.getLogFilePath()); System.out.println(pduRecorder.getLogFilePath());
} }
} }
...@@ -23,88 +23,87 @@ compile-single: ...@@ -23,88 +23,87 @@ compile-single:
run-single: run-single:
OpenDis7Examples.PduListenerSaver started... OpenDis7Examples.PduListenerSaver started...
Beginning PduListenerSaver (239.1.2.3:3000) to directory pduLog Beginning PduListenerSaver (239.1.2.3:3000) to directory pduLog
Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog21.dislog Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog40.dislog
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] Using network interface Intel(R) Centrino(R) Ultimate-N 6300 AGN [DisThreadedNetworkInterface] using network interface Intel(R) Centrino(R) Ultimate-N 6300 AGN
class edu.nps.moves.dis7.utilities.stream.PduRecorder listening to IP address 239.1.2.3 on port 3000 [DisThreadedNetworkInterface] datagramSocket.joinGroup address=239.1.2.3 port=3000 start() complete
Type p/enter to pause, r/enter to resume, q/enter to quit [PduRecorder PduListenerSaver] listening to IP address 239.1.2.3 on port 3000
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 1. received DisPduType 01 ENTITY_STATE, size 144 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 2. received DisPduType 02 FIRE, size 96 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 3. received DisPduType 03 DETONATION, size 104 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 4. received DisPduType 04 COLLISION, size 60 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 5. received DisPduType 05 SERVICE_REQUEST, size 28 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 6. received DisPduType 06 RESUPPLY_OFFER, size 28 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 7. received DisPduType 07 RESUPPLY_RECEIVED, size 28 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 8. received DisPduType 08 RESUPPLY_CANCEL, size 24 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 9. received DisPduType 09 REPAIR_COMPLETE, size 28 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 10. received DisPduType 10 REPAIR_RESPONSE, size 28 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 11. received DisPduType 11 CREATE_ENTITY, size 28 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 12. received DisPduType 12 REMOVE_ENTITY, size 28 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 13. received DisPduType 13 START_RESUME, size 44 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 14. received DisPduType 14 STOP_FREEZE, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 15. received DisPduType 15 ACKNOWLEDGE, size 32 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 16. received DisPduType 16 ACTION_REQUEST, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 17. received DisPduType 17 ACTION_RESPONSE, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 18. received DisPduType 18 DATA_QUERY, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 19. received DisPduType 19 SET_DATA, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 20. received DisPduType 20 DATA, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 21. received DisPduType 21 EVENT_REPORT, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 22. received DisPduType 22 COMMENT, size 112 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 23. received DisPduType 23 ELECTROMAGNETIC_EMISSION, size 28 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 24. received DisPduType 24 DESIGNATOR, size 88 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 25. received DisPduType 25 TRANSMITTER, size 107 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 26. received DisPduType 26 SIGNAL, size 32 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 27. received DisPduType 27 RECEIVER, size 36 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 28. received DisPduType 28 IDENTIFICATION_FRIEND_OR_FOE, size 60 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 29. received DisPduType 29 UNDERWATER_ACOUSTIC, size 32 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 30. received DisPduType 30 SUPPLEMENTAL_EMISSION_ENTITY_STATE, size 28 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 31. received DisPduType 31 INTERCOM_SIGNAL, size 32 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 32. received DisPduType 32 INTERCOM_CONTROL, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 33. received DisPduType 33 AGGREGATE_STATE, size 136 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 34. received DisPduType 34 ISGROUPOF, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 35. received DisPduType 35 TRANSFER_OWNERSHIP, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 36. received DisPduType 36 ISPARTOF, size 52 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 37. received DisPduType 37 MINEFIELD_STATE, size 72 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 38. received DisPduType 38 MINEFIELD_QUERY, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 39. received DisPduType 39 MINEFIELD_DATA, size 44 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 40. received DisPduType 40 MINEFIELD_RESPONSE_NACK, size 26 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 41. received DisPduType 41 ENVIRONMENTAL_PROCESS, size 32 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 42. received DisPduType 42 GRIDDED_DATA, size 64 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 43. received DisPduType 43 POINT_OBJECT_STATE, size 91 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 44. received DisPduType 44 LINEAR_OBJECT_STATE, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 45. received DisPduType 45 AREAL_OBJECT_STATE, size 49 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 46. received DisPduType 46 TIME_SPACE_POSITION_INFORMATION, size 54 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 47. received DisPduType 47 APPEARANCE, size 67 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 48. received DisPduType 48 ARTICULATED_PARTS, size 17 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 49. received DisPduType 49 LIVE_ENTITY_FIRE, size 67 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 50. received DisPduType 50 LIVE_ENTITY_DETONATION, size 79 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 51. received DisPduType 51 CREATE_ENTITY_RELIABLE, size 32 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 52. received DisPduType 52 REMOVE_ENTITY_RELIABLE, size 32 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 53. received DisPduType 53 START_RESUME_RELIABLE, size 48 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 54. received DisPduType 54 STOP_FREEZE_RELIABLE, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 55. received DisPduType 55 ACKNOWLEDGE_RELIABLE, size 32 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 56. received DisPduType 56 ACTION_REQUEST_RELIABLE, size 44 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 57. received DisPduType 57 ACTION_RESPONSE_RELIABLE, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 58. received DisPduType 58 DATA_QUERY_RELIABLE, size 44 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 59. received DisPduType 59 SET_DATA_RELIABLE, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 60. received DisPduType 60 DATA_RELIABLE, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 61. received DisPduType 61 EVENT_REPORT_RELIABLE, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 62. received DisPduType 62 COMMENT_RELIABLE, size 32 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 63. received DisPduType 63 RECORD_RELIABLE, size 36 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 64. received DisPduType 64 SET_RECORD_RELIABLE, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 65. received DisPduType 65 RECORD_QUERY_RELIABLE, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 66. received DisPduType 66 COLLISION_ELASTIC, size 100 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 67. received DisPduType 67 ENTITY_STATE_UPDATE, size 72 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 68. received DisPduType 68 DIRECTED_ENERGY_FIRE, size 88 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 69. received DisPduType 69 ENTITY_DAMAGE_STATUS, size 24 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 70. received DisPduType 70 INFORMATION_OPERATIONS_ACTION, size 56 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 71. received DisPduType 71 INFORMATION_OPERATIONS_REPORT, size 40 bytes)
[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] 72. received DisPduType 72 ATTRIBUTE, size 32 bytes)
quit
Type p/enter to pause, r/enter to resume, q/enter to quit Type p/enter to pause, r/enter to resume, q/enter to quit
[DisThreadedNetworkInterface PduListenerSaver] [receipt 1] DisPduType 01 ENTITY_STATE, size 144 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 2] DisPduType 02 FIRE, size 96 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 3] DisPduType 03 DETONATION, size 104 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 4] DisPduType 04 COLLISION, size 60 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 5] DisPduType 05 SERVICE_REQUEST, size 28 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 6] DisPduType 06 RESUPPLY_OFFER, size 28 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 7] DisPduType 07 RESUPPLY_RECEIVED, size 28 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 8] DisPduType 08 RESUPPLY_CANCEL, size 24 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 9] DisPduType 09 REPAIR_COMPLETE, size 28 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 10] DisPduType 10 REPAIR_RESPONSE, size 28 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 11] DisPduType 11 CREATE_ENTITY, size 28 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 12] DisPduType 12 REMOVE_ENTITY, size 28 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 13] DisPduType 13 START_RESUME, size 44 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 14] DisPduType 14 STOP_FREEZE, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 15] DisPduType 15 ACKNOWLEDGE, size 32 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 16] DisPduType 16 ACTION_REQUEST, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 17] DisPduType 17 ACTION_RESPONSE, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 18] DisPduType 18 DATA_QUERY, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 19] DisPduType 19 SET_DATA, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 20] DisPduType 20 DATA, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 21] DisPduType 21 EVENT_REPORT, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 22] DisPduType 22 COMMENT, size 112 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 23] DisPduType 23 ELECTROMAGNETIC_EMISSION, size 28 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 24] DisPduType 24 DESIGNATOR, size 88 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 25] DisPduType 25 TRANSMITTER, size 107 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 26] DisPduType 26 SIGNAL, size 32 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 27] DisPduType 27 RECEIVER, size 36 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 28] DisPduType 28 IDENTIFICATION_FRIEND_OR_FOE, size 60 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 29] DisPduType 29 UNDERWATER_ACOUSTIC, size 32 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 30] DisPduType 30 SUPPLEMENTAL_EMISSION_ENTITY_STATE, size 28 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 31] DisPduType 31 INTERCOM_SIGNAL, size 32 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 32] DisPduType 32 INTERCOM_CONTROL, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 33] DisPduType 33 AGGREGATE_STATE, size 136 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 34] DisPduType 34 ISGROUPOF, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 35] DisPduType 35 TRANSFER_OWNERSHIP, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 36] DisPduType 36 ISPARTOF, size 52 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 37] DisPduType 37 MINEFIELD_STATE, size 72 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 38] DisPduType 38 MINEFIELD_QUERY, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 39] DisPduType 39 MINEFIELD_DATA, size 44 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 40] DisPduType 40 MINEFIELD_RESPONSE_NACK, size 26 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 41] DisPduType 41 ENVIRONMENTAL_PROCESS, size 32 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 42] DisPduType 42 GRIDDED_DATA, size 64 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 43] DisPduType 43 POINT_OBJECT_STATE, size 91 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 44] DisPduType 44 LINEAR_OBJECT_STATE, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 45] DisPduType 45 AREAL_OBJECT_STATE, size 49 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 46] DisPduType 46 TIME_SPACE_POSITION_INFORMATION, size 54 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 47] DisPduType 47 APPEARANCE, size 67 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 48] DisPduType 48 ARTICULATED_PARTS, size 17 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 49] DisPduType 49 LIVE_ENTITY_FIRE, size 67 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 50] DisPduType 50 LIVE_ENTITY_DETONATION, size 79 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 51] DisPduType 51 CREATE_ENTITY_RELIABLE, size 32 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 52] DisPduType 52 REMOVE_ENTITY_RELIABLE, size 32 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 53] DisPduType 53 START_RESUME_RELIABLE, size 48 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 54] DisPduType 54 STOP_FREEZE_RELIABLE, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 55] DisPduType 55 ACKNOWLEDGE_RELIABLE, size 32 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 56] DisPduType 56 ACTION_REQUEST_RELIABLE, size 44 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 57] DisPduType 57 ACTION_RESPONSE_RELIABLE, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 58] DisPduType 58 DATA_QUERY_RELIABLE, size 44 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 59] DisPduType 59 SET_DATA_RELIABLE, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 60] DisPduType 60 DATA_RELIABLE, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 61] DisPduType 61 EVENT_REPORT_RELIABLE, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 62] DisPduType 62 COMMENT_RELIABLE, size 32 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 63] DisPduType 63 RECORD_RELIABLE, size 36 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 64] DisPduType 64 SET_RECORD_RELIABLE, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 65] DisPduType 65 RECORD_QUERY_RELIABLE, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 66] DisPduType 66 COLLISION_ELASTIC, size 100 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 67] DisPduType 67 ENTITY_STATE_UPDATE, size 72 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 68] DisPduType 68 DIRECTED_ENERGY_FIRE, size 88 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 69] DisPduType 69 ENTITY_DAMAGE_STATUS, size 24 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 70] DisPduType 70 INFORMATION_OPERATIONS_ACTION, size 56 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 71] DisPduType 71 INFORMATION_OPERATIONS_REPORT, size 40 bytes)
[DisThreadedNetworkInterface PduListenerSaver] [receipt 72] DisPduType 72 ATTRIBUTE, size 32 bytes)
q q
... QUIT
Closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog21.dislog Closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog40.dislog
Ending PduListenerSaver pdu recording, saved to file: ... QUIT
C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog21.dislog Finished PduListenerSaver pdu recording, saved to file:
BUILD SUCCESSFUL (total time: 44 seconds) C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog40.dislog
BUILD SUCCESSFUL (total time: 24 seconds)
...@@ -21,7 +21,7 @@ import java.util.Scanner; ...@@ -21,7 +21,7 @@ import java.util.Scanner;
*/ */
public class PduReaderPlayer public class PduReaderPlayer
{ {
private final static String DEFAULT_OUTPUT_DIRECTORY = "pduLog"; private final static String DEFAULT_OUTPUT_DIRECTORY = "pduLog";
/** Default multicast group address we send on. /** Default multicast group address we send on.
* @see <a href="https://en.wikipedia.org/wiki/Multicast_address">https://en.wikipedia.org/wiki/Multicast_address</a> */ * @see <a href="https://en.wikipedia.org/wiki/Multicast_address">https://en.wikipedia.org/wiki/Multicast_address</a> */
public static final String DEFAULT_MULTICAST_ADDRESS = AllPduSender.DEFAULT_MULTICAST_ADDRESS; public static final String DEFAULT_MULTICAST_ADDRESS = AllPduSender.DEFAULT_MULTICAST_ADDRESS;
...@@ -34,8 +34,7 @@ public class PduReaderPlayer ...@@ -34,8 +34,7 @@ public class PduReaderPlayer
PAUSED; PAUSED;
} }
/** /** Command-line invocation (CLI) of program, execution starts here
* Program invocation, execution starts here
* @param args command-line arguments * @param args command-line arguments
*/ */
public static void main(String[] args) public static void main(String[] args)
...@@ -61,20 +60,21 @@ public class PduReaderPlayer ...@@ -61,20 +60,21 @@ public class PduReaderPlayer
sendToNet = Boolean.valueOf(args[3]); sendToNet = Boolean.valueOf(args[3]);
break; break;
default: default:
System.err.println("Usage: PduReaderPlayer() or " System.err.println("Usage: PduReaderPlayer() or \n"
+ "PduReaderPlayer(\"outputdir\", \"sendToNet true/false\") or " + "PduReaderPlayer(\"outputdir\", \"sendToNet true/false\") or \n"
+ "PduReaderPlayer(\"outputdir\", \"ipPort\", \"sendToNet true/false\") or \n"
+ "PduReaderPlayer(\"outputdir\", \"multicast address\", \"ipPort\", \"sendToNet true/false\""); + "PduReaderPlayer(\"outputdir\", \"multicast address\", \"ipPort\", \"sendToNet true/false\"");
System.exit(1); System.exit(1);
} }
System.out.println("Beginning PduReaderPlayer (" + multicastAddress + ":" + multicastPort + ") to directory " + outputDirectory); System.out.println("Beginning PduReaderPlayer (" + multicastAddress + ":" + multicastPort + ") to directory " + outputDirectory);
try { try
{
mystate state = mystate.RUNNING;
Scanner terminalKeyboardScanner = new Scanner(System.in);
PduPlayer pduPlayer = new PduPlayer(multicastAddress, multicastPort, Path.of(outputDirectory), sendToNet); PduPlayer pduPlayer = new PduPlayer(multicastAddress, multicastPort, Path.of(outputDirectory), sendToNet);
pduPlayer.startResume(); pduPlayer.startResume();
mystate state = mystate.RUNNING;
Scanner terminalKeyboardScanner = new Scanner(System.in);
while (true) // monitor user input via keyboard while (true) // monitor user input via keyboard
{ {
System.out.println("Type p/enter to pause, r/enter to resume, q/enter to quit"); System.out.println("Type p/enter to pause, r/enter to resume, q/enter to quit");
...@@ -95,7 +95,7 @@ public class PduReaderPlayer ...@@ -95,7 +95,7 @@ public class PduReaderPlayer
} }
System.out.println("Ending pdu files playback for directory " + outputDirectory); System.out.println("Ending pdu files playback for directory " + outputDirectory);
System.out.println("OpenDis7Examples.PduReaderPlayer complete."); System.out.println("OpenDis7Examples.PduReaderPlayer complete.");
System.exit(0); // not sure why this is necessary with Netbeans... System.exit(0); // TODO not sure why this is necessary with Netbeans...
} }
catch (IOException ex) { catch (IOException ex) {
System.err.println("Exception: " + ex.getClass().getSimpleName() + ": " + ex.getLocalizedMessage()); System.err.println("Exception: " + ex.getClass().getSimpleName() + ": " + ex.getLocalizedMessage());
......
...@@ -8,8 +8,8 @@ compile-single: ...@@ -8,8 +8,8 @@ compile-single:
run-single: run-single:
OpenDis7Examples.PduReaderPlayer started... OpenDis7Examples.PduReaderPlayer started...
Beginning PduReaderPlayer (239.1.2.3:3000) to directory pduLog Beginning PduReaderPlayer (239.1.2.3:3000) to directory pduLog
PduPlayer begin() playing DIS logs.
Type p/enter to pause, r/enter to resume, q/enter to quit Type p/enter to pause, r/enter to resume, q/enter to quit
PduPlayer begin() playing DIS logs.
Replaying C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog.dislog Replaying C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog.dislog
ENCODING_PLAINTEXT ENCODING_PLAINTEXT
Sent PDU: DisPduType 01 ENTITY_STATE Sent PDU: DisPduType 01 ENTITY_STATE
...@@ -94,4 +94,4 @@ q ...@@ -94,4 +94,4 @@ q
... QUIT ... QUIT
Ending pdu files playback for directory pduLog Ending pdu files playback for directory pduLog
OpenDis7Examples.PduReaderPlayer complete. OpenDis7Examples.PduReaderPlayer complete.
BUILD SUCCESSFUL (total time: 36 seconds) BUILD SUCCESSFUL (total time: 10 seconds)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment