/** * Copyright (c) 2008-2020, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved. * This work is provided under a BSD open-source license, see project license.html and license.txt */ package OpenDis7Examples; import edu.nps.moves.dis7.utilities.DisThreadedNetIF; import edu.nps.moves.dis7.utilities.stream.PduPlayer; import java.io.IOException; import java.nio.file.Path; import java.util.Scanner; /** Class to leverage the {@link edu.nps.moves.dis7.utilities.stream.PduPlayer} * with PDU log playback console controls for resume, pause and quit. * * PduSaver.java created on Aug 21, 2019 * Renamed PduReaderPlayer * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu * * @author Mike Bailey, jmbailey@nps.edu * @version $Id$ */ public class PduReaderPlayer { private final static String DEFAULT_OUTPUT_DIRECTORY = "pduLog"; public static final String DEFAULT_MULTICAST_ADDRESS = AllPduSender.DEFAULT_MULTICAST_ADDRESS; public static final int DEFAULT_MULTICAST_PORT = AllPduSender.DEFAULT_MULTICAST_PORT; private enum mystate { RUNNING, PAUSED; } public static void main(String[] args) { String outputDirectory = DEFAULT_OUTPUT_DIRECTORY; String multicastAddress = DEFAULT_MULTICAST_ADDRESS; int multicastPort = DEFAULT_MULTICAST_PORT; System.out.println("DisExamplesOpenDis7.PduReaderPlayer started..."); switch (args.length) { case 0: break; case 1: outputDirectory = args[0]; break; case 3: outputDirectory = args[0]; multicastAddress = args[1]; multicastPort = Integer.parseInt(args[2]); break; default: System.err.println("Usage: PduReaderPlayer() or " + "PduReaderPlayer(\"outputdir\", \"sendToNet true/false\") or " + "PduReaderPlayer(\"outputdir\", \"multicast address\", \"ipPort\", \"sendToNet true/false\""); System.exit(1); } System.out.println("Beginning PduReaderPlayer (" + multicastAddress + ":" + multicastPort + ") to directory " + outputDirectory); try { PduPlayer player = new PduPlayer(multicastAddress, multicastPort, new File(outputDirectory).toPath()); player.startResume(); mystate state = mystate.RUNNING; Scanner scan = new Scanner(System.in); while (true) { System.out.println("Type p/enter to pause, r/enter to resume, q/enter to quit"); String line = scan.nextLine(); if (line.equalsIgnoreCase("p") && state == mystate.RUNNING) { pduPlayer.stopPause(); state = mystate.PAUSED; } else if (line.equalsIgnoreCase("r") && state == mystate.PAUSED) { pduPlayer.startResume(); state = mystate.RUNNING; } else if (line.equalsIgnoreCase("q")) { pduPlayer.end(); break; } } System.out.println("Ending pdu files playback for directory " + outputDirectory); System.out.println("DisExamplesOpenDis7.PduReaderPlayer complete."); System.exit(0); // not sure why this is necessary with Netbeans... } catch (IOException ex) { System.err.println("Exception: " + ex.getClass().getSimpleName() + ": " + ex.getLocalizedMessage()); } } }