package mil.navy.nps.logger; import java.awt.*; import java.net.*; import java.io.*; import sun.net.*; import java.util.*; import java.awt.event.*; import mil.navy.nps.dis.ProtocolDataUnit; import mil.navy.nps.dis.EntityStatePdu; import mil.navy.nps.dis.*; import mil.navy.nps.util.*; import mil.navy.nps.testing.*; import mil.navy.nps.disEnumerations.*; /** * Records pdus and stores them in an array. * @authors Millie Ives, David Holland, DMcG * @version Version 3 */ public class Record extends Thread { PduPlayer pduPlayer; // Pointer back to main object BehaviorStreamBufferUDP bsbNet; boolean stillRunning; /** * Constructor for Record thread * * @authors DMcG * @param pPlayer pointer back to main object * @param inAddress string format IP address to listen on * @param portNumber port to listen on */ public Record(PduPlayer pPlayer, // ptr pack to player String intAddress, // string format inet address to listen on int portNumber) // port { int port = 0; pduPlayer = pPlayer; stillRunning = true; port = portNumber; bsbNet = new BehaviorStreamBufferUDP(intAddress, port); } /** * Called by the thread start method. */ public void run() { Vector pdus; Enumeration enumeration; ProtocolDataUnit pdu; Vector recordedPdus = pduPlayer.getPduBuffer(); recordedPdus.clear(); stillRunning = true; while (stillRunning) { pdus = bsbNet.receivedPdus(); recordedPdus.addAll(pdus); // Update the UI to reflect the new # of recorded PDUs. Do this only if // we actually got PDUs. (avoids annoying flicker on screen) if(pdus.size() > 0) pduPlayer.syncPduCount(); try { Thread.sleep(500); } catch(Exception e) { System.out.println(e); } } System.out.println("exiting from record loop"); bsbNet.shutdown(); bsbNet.cleanup(); // We exited out of the record loop; click the "stop" button, which // can cause a series of state transitions. pduPlayer.performStopButtonHit(); } // end run() public void setStillRunning(boolean status) { stillRunning = status; } }