diff --git a/examples/src/OpenDis7Examples/ExampleSimulationProgram.java b/examples/src/OpenDis7Examples/ExampleSimulationProgram.java index ea8eb795cc36fee8d47c3be4b1734f6cf90e9aa9..0854bf65de783e8211a1c47476662cee47b9ab93 100644 --- a/examples/src/OpenDis7Examples/ExampleSimulationProgram.java +++ b/examples/src/OpenDis7Examples/ExampleSimulationProgram.java @@ -24,8 +24,15 @@ import java.util.logging.Logger; */ 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. * Welcome! Other parts of this program handle bookkeeping and plumbing tasks so that * you can focus on your model entities and activities. @@ -37,7 +44,7 @@ public class ExampleSimulationProgram * interesting, even helpful, but don't really have to worry about. */ @SuppressWarnings("SleepWhileInLoop") // yes we do that - public void runSimulation () + public void runSimulationLoops () { try { @@ -134,8 +141,7 @@ public class ExampleSimulationProgram } } /* **************************** infrastructure code, modification is seldom needed ************************* */ - - private boolean verboseComments = true; + String narrativeMessage1 = new String(); String narrativeMessage2 = new String(); String narrativeMessage3 = new String(); @@ -154,15 +160,11 @@ public class ExampleSimulationProgram private final static String TRACE_PREFIX = "[" + ExampleSimulationProgram.class.getName() + "] "; // class variables - PduFactory pduFactory = new PduFactory(); - DisThreadedNetworkInterface disNetworkInterface; + PduFactory pduFactory = new PduFactory(); + DisThreadedNetworkInterface disNetworkInterface; DisThreadedNetworkInterface.PduListener pduListener; - Pdu receivedPdu; - - 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; + Pdu receivedPdu; + PduRecorder pduRecorder; /** * Constructor design goal: additional built-in initialization conveniences can go here @@ -223,6 +225,7 @@ public class ExampleSimulationProgram public void setUpNetworkInterface() { disNetworkInterface = new DisThreadedNetworkInterface(getNetworkAddress(), getNetworkPort()); + disNetworkInterface.setDescriptor ("ExampleSimulationProgram pdu looping"); System.out.println("Network confirmation:" + " address=" + disNetworkInterface.getAddress()+ // disNetworkInterface.getMulticastGroup() + @@ -237,11 +240,19 @@ public class ExampleSimulationProgram } }; 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 */ public void tearDownNetworkInterface() { + pduRecorder.stop(); + disNetworkInterface.removeListener(pduListener); disNetworkInterface.close(); @@ -351,16 +362,9 @@ public class ExampleSimulationProgram // OK here we go... 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 System.out.println(TRACE_PREFIX + "complete."); // report successful completion diff --git a/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt b/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt index 9f23859baa7a45bf3d81e8a313b070337ed52511..696e044db49d32c1a9d2128e949f1228f7f8b3f4 100644 --- a/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt +++ b/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt @@ -7,94 +7,92 @@ Compiling 1 source file to C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\buil compile-single: run-single: [OpenDis7Examples.ExampleSimulationProgram] started... -[edu.nps.moves.dis7.utilities.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] using network interface Intel(R) Centrino(R) Ultimate-N 6300 AGN +[DisThreadedNetworkInterface] datagramSocket.joinGroup address=239.1.2.3 port=3000 start() complete Network confirmation: address=239.1.2.3 port=3000 Beginning pdu save to directory ./pduLog -Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog2.dislog -[edu.nps.moves.dis7.utilities.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 -class edu.nps.moves.dis7.utilities.stream.PduRecorder listening to IP address 239.1.2.3 on port 3000 +Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog42.dislog +[DisThreadedNetworkInterface] using network interface Intel(R) Centrino(R) Ultimate-N 6300 AGN +[DisThreadedNetworkInterface] datagramSocket.joinGroup address=239.1.2.3 port=3000 start() complete +[PduRecorder ExampleSimulationProgram pduRecorder] listening to IP address 239.1.2.3 on port 3000 ... My simulation just did something, no really... ... [Pausing for 1.0 seconds] 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) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 1] DisPduType 01 ENTITY_STATE, size 144 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 1] DisPduType 01 ENTITY_STATE, size 144 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 2] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 2] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 2] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 3] DisPduType 22 COMMENT, size 104 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 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] [sending 1] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 1] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 1] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 2] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 2] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 2] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 3] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [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] ... [PDUs successfully sent for this loop] ... My simulation just did something, no really... ... [Pausing for 1.0 seconds] 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) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 4] DisPduType 01 ENTITY_STATE, size 144 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 4] DisPduType 01 ENTITY_STATE, size 144 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 5] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 5] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 5] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 6] DisPduType 22 COMMENT, size 104 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 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] [sending 4] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 4] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 4] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 5] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 5] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 5] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 6] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [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] ... [PDUs successfully sent for this loop] ... My simulation just did something, no really... ... [Pausing for 1.0 seconds] 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) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 7] DisPduType 01 ENTITY_STATE, size 144 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 7] DisPduType 01 ENTITY_STATE, size 144 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 8] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 8] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 8] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 9] DisPduType 22 COMMENT, size 104 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [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 7] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 7] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 7] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 8] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 8] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 8] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 9] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 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] ... [PDUs successfully sent for this loop] ... My simulation just did something, no really... ... [Pausing for 1.0 seconds] 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) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 10] DisPduType 01 ENTITY_STATE, size 144 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 10] DisPduType 01 ENTITY_STATE, size 144 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 11] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 11] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 11] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 12] DisPduType 22 COMMENT, size 104 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 12] DisPduType 22 COMMENT, size 104 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 12] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 10] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 10] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 10] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 11] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 11] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 11] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 12] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [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] ... [PDUs successfully sent for this loop] ... My simulation just did something, no really... ... [Pausing for 1.0 seconds] 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) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 13] DisPduType 01 ENTITY_STATE, size 144 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 13] DisPduType 01 ENTITY_STATE, size 144 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 14] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 14] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 14] DisPduType 02 FIRE, size 96 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 15] DisPduType 22 COMMENT, size 104 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [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 13] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 13] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 13] DisPduType 01 ENTITY_STATE, size 144 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 14] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 14] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 14] DisPduType 02 FIRE, size 96 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 15] DisPduType 22 COMMENT, size 104 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 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] ... [PDUs successfully sent for this loop] ... [Termination condition met, simulationComplete=true] -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [sending 16] DisPduType 22 COMMENT, size 120 bytes) -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] [receipt 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] [sending 16] DisPduType 22 COMMENT, size 120 bytes) +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [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] ... [final CommentPdu successfully sent for simulation] -Closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog2.dislog -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] Exception in DisThreadedNetworkInterface receive thread: Socket closed -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] Retrying new socket... -[edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface] datagramSocket.leaveGroup address=239.1.2.3 port=3000 +Closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog42.dislog +[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] datagramSocket.leaveGroup address=239.1.2.3 port=3000 stop() complete [OpenDis7Examples.ExampleSimulationProgram] complete. BUILD SUCCESSFUL (total time: 11 seconds) diff --git a/examples/src/OpenDis7Examples/PduListenerSaver.java b/examples/src/OpenDis7Examples/PduListenerSaver.java index a3a80ef7d1b2d46fa3ae48ef023024187a6c45d7..1bde47c9ff6bdda1a16bf403ed044202d03752e4 100644 --- a/examples/src/OpenDis7Examples/PduListenerSaver.java +++ b/examples/src/OpenDis7Examples/PduListenerSaver.java @@ -4,8 +4,8 @@ */ package OpenDis7Examples; +import edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface; import edu.nps.moves.dis7.utilities.stream.PduRecorder; -import java.io.IOException; import java.util.Scanner; /** Class to leverage the {@link edu.nps.moves.dis7.utilities.stream.PduRecorder} @@ -20,82 +20,117 @@ import java.util.Scanner; */ public class PduListenerSaver { - private final static String DEFAULT_OUTPUT_DIRECTORY = "pduLog"; - /** - * 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> */ - public static final String DEFAULT_MULTICAST_ADDRESS = AllPduSender.DEFAULT_MULTICAST_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; + private final static String DEFAULT_OUTPUT_DIRECTORY = "pduLog"; + + /** 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> */ + public static String DEFAULT_DIS_ADDRESS = DisThreadedNetworkInterface.DEFAULT_DIS_ADDRESS; + + /** 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 { RUNNING, 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 */ public static void main(String[] args) { - String outputDirectory = DEFAULT_OUTPUT_DIRECTORY; - String multicastAddress = DEFAULT_MULTICAST_ADDRESS; - int multicastPort = DEFAULT_MULTICAST_PORT; + String outputDirectory = DEFAULT_OUTPUT_DIRECTORY; + String multicastAddress = DEFAULT_DIS_ADDRESS; + int port = DEFAULT_DIS_PORT; System.out.println("OpenDis7Examples.PduListenerSaver started..."); switch (args.length) { case 0: + // use default values break; case 1: outputDirectory = args[0]; break; case 3: - outputDirectory = args[0]; + outputDirectory = args[0]; multicastAddress = args[1]; - multicastPort = Integer.parseInt(args[2]); + port = Integer.parseInt(args[2]); break; default: // 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.out.println("Beginning PduListenerSaver (" + multicastAddress + ":" + multicastPort + ") to directory " + outputDirectory); + System.out.println("Beginning PduListenerSaver (" + multicastAddress + ":" + port + ") to directory " + outputDirectory); mystate state = mystate.RUNNING; - Scanner terminalKeyboardScanner = new Scanner(System.in); - PduRecorder pduRecorder = new PduRecorder(outputDirectory, multicastAddress, multicastPort); // assumes save on quit + Scanner terminalKeyboardScanner = new Scanner(System.in); + PduRecorder pduRecorder = new PduRecorder(outputDirectory, multicastAddress, port); // assumes save + pduRecorder.setDescriptor("PduListenerSaver"); + pduRecorder.start(); // begin running while (true) // monitor user input via keyboard { System.out.println("Type p/enter to pause, r/enter to resume, q/enter to quit"); String line = terminalKeyboardScanner.nextLine(); - if (line.equalsIgnoreCase("p") && state == mystate.RUNNING) { - pduRecorder.stopPause(); + if (line.equalsIgnoreCase("p") && state == mystate.RUNNING) + { + pduRecorder.pause(); state = mystate.PAUSED; - System.out.println("... now PAUSED"); + System.out.println("... state is now PAUSED"); } - else if (line.equalsIgnoreCase("p")) { - System.out.println("... still PAUSED"); + else if (line.equalsIgnoreCase("p")) + { + pduRecorder.pause(); + state = mystate.PAUSED; + System.out.println("... state is still PAUSED"); } - else if (line.equalsIgnoreCase("r") && state == mystate.PAUSED) { - pduRecorder.startResume(); + else if (line.equalsIgnoreCase("r") && state == mystate.PAUSED) + { + pduRecorder.resume(); state = mystate.RUNNING; - System.out.println("... now RUNNING"); + System.out.println("... state is now RUNNING"); } - else if (line.equalsIgnoreCase("r")) { - System.out.println("... still RUNNING"); + else if (line.equalsIgnoreCase("r")) + { + 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"); - pduRecorder.end(); 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()); } } diff --git a/examples/src/OpenDis7Examples/PduListenerSaverLog.txt b/examples/src/OpenDis7Examples/PduListenerSaverLog.txt index e36724bfd12768e55e47e3d5f4dfbae71e24247e..72e7c1bb0afb88419591b52bb8f125203a7cb9d8 100644 --- a/examples/src/OpenDis7Examples/PduListenerSaverLog.txt +++ b/examples/src/OpenDis7Examples/PduListenerSaverLog.txt @@ -23,88 +23,87 @@ compile-single: run-single: OpenDis7Examples.PduListenerSaver started... Beginning PduListenerSaver (239.1.2.3:3000) to directory pduLog -Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog21.dislog -[edu.nps.moves.dis7.utilities.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 -Type p/enter to pause, r/enter to resume, q/enter to quit -[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 +Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog40.dislog +[DisThreadedNetworkInterface] using network interface Intel(R) Centrino(R) Ultimate-N 6300 AGN +[DisThreadedNetworkInterface] datagramSocket.joinGroup address=239.1.2.3 port=3000 start() complete +[PduRecorder PduListenerSaver] listening to IP address 239.1.2.3 on port 3000 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 -... QUIT -Closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog21.dislog -Ending PduListenerSaver pdu recording, saved to file: -C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog21.dislog -BUILD SUCCESSFUL (total time: 44 seconds) +Closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog40.dislog +... QUIT +Finished PduListenerSaver pdu recording, saved to file: +C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog40.dislog +BUILD SUCCESSFUL (total time: 24 seconds) diff --git a/examples/src/OpenDis7Examples/PduReaderPlayer.java b/examples/src/OpenDis7Examples/PduReaderPlayer.java index 606798dcdfa6504ceca60a3a7aa8412a4662758e..b380569cba7ae7e9c017623e8315d91839c9ab37 100644 --- a/examples/src/OpenDis7Examples/PduReaderPlayer.java +++ b/examples/src/OpenDis7Examples/PduReaderPlayer.java @@ -21,7 +21,7 @@ import java.util.Scanner; */ 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. * @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; @@ -34,8 +34,7 @@ public class PduReaderPlayer PAUSED; } - /** - * Program invocation, execution starts here + /** Command-line invocation (CLI) of program, execution starts here * @param args command-line arguments */ public static void main(String[] args) @@ -61,20 +60,21 @@ public class PduReaderPlayer sendToNet = Boolean.valueOf(args[3]); break; default: - System.err.println("Usage: PduReaderPlayer() or " - + "PduReaderPlayer(\"outputdir\", \"sendToNet true/false\") or " + System.err.println("Usage: PduReaderPlayer() or \n" + + "PduReaderPlayer(\"outputdir\", \"sendToNet true/false\") or \n" + + "PduReaderPlayer(\"outputdir\", \"ipPort\", \"sendToNet true/false\") or \n" + "PduReaderPlayer(\"outputdir\", \"multicast address\", \"ipPort\", \"sendToNet true/false\""); System.exit(1); } 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.startResume(); - mystate state = mystate.RUNNING; - Scanner terminalKeyboardScanner = new Scanner(System.in); - while (true) // monitor user input via keyboard { System.out.println("Type p/enter to pause, r/enter to resume, q/enter to quit"); @@ -95,7 +95,7 @@ public class PduReaderPlayer } System.out.println("Ending pdu files playback for directory " + outputDirectory); 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) { System.err.println("Exception: " + ex.getClass().getSimpleName() + ": " + ex.getLocalizedMessage()); diff --git a/examples/src/OpenDis7Examples/PduReaderPlayerLog.txt b/examples/src/OpenDis7Examples/PduReaderPlayerLog.txt index 045d885479cdac508523277067b92ffe3836db85..20a6fa2aae951d408bcb9d478b04a343769b3a4a 100644 --- a/examples/src/OpenDis7Examples/PduReaderPlayerLog.txt +++ b/examples/src/OpenDis7Examples/PduReaderPlayerLog.txt @@ -8,8 +8,8 @@ compile-single: run-single: OpenDis7Examples.PduReaderPlayer started... 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 +PduPlayer begin() playing DIS logs. Replaying C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog.dislog ENCODING_PLAINTEXT Sent PDU: DisPduType 01 ENTITY_STATE @@ -94,4 +94,4 @@ q ... QUIT Ending pdu files playback for directory pduLog OpenDis7Examples.PduReaderPlayer complete. -BUILD SUCCESSFUL (total time: 36 seconds) +BUILD SUCCESSFUL (total time: 10 seconds)