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

more consistent trace messages, move code block from main() to selfTest()

parent 4d5bef9c
No related branches found
No related tags found
No related merge requests found
......@@ -309,25 +309,25 @@ public class DisThreadedNetworkInterface
{
if (receiveThread == null)
{
// System.out.println("DisThreadedNetworkInterface createThreads() start receiveThread...");
// System.out.println(TRACE_PREFIX + "createThreads() start receiveThread...");
receiveThread = new Thread(receiveThreadRunnable, "receiveThread");
// https://stackoverflow.com/questions/2213340/what-is-a-daemon-thread-in-java
receiveThread.setDaemon(false); // user thread, not system thread
receiveThread.setPriority(Thread.NORM_PRIORITY);
receiveThread.start();
}
System.out.println("DisThreadedNetworkInterface createThreads() receiveThread.isAlive()=" + receiveThread.isAlive());
System.out.println(TRACE_PREFIX + "createThreads() receiveThread.isAlive()=" + receiveThread.isAlive());
if (sendingThread == null)
{
// System.out.println("DisThreadedNetworkInterface createThreads() start sendingThread...");
// System.out.println(TRACE_PREFIX + "createThreads() start sendingThread...");
sendingThread = new Thread(sendingThreadRunnable, "sendingThread");
// https://stackoverflow.com/questions/2213340/what-is-a-daemon-thread-in-java
sendingThread.setDaemon(false); // user thread, not system thread
sendingThread.setPriority(Thread.NORM_PRIORITY);
sendingThread.start();
}
System.out.println("DisThreadedNetworkInterface createThreads() sendingThread.isAlive()=" + receiveThread.isAlive());
System.out.println(TRACE_PREFIX + "createThreads() sendingThread.isAlive()=" + receiveThread.isAlive());
}
/**
* Can be used to restart DisThreadedNetworkInterface if closed.
......@@ -570,7 +570,7 @@ public class DisThreadedNetworkInterface
dos.flush(); // immediately force pdu write, if any remain
baos.close();
dos.close();
System.out.println ("*** DisThreadedNetworkInterface close():" +
System.out.println (TRACE_PREFIX + "close():" +
" pdus2send.size()=" + pdus2send.size() +
" baos.size()=" + baos.size() + " dos.size()=" + dos.size());
......@@ -603,7 +603,7 @@ public class DisThreadedNetworkInterface
}
catch (Exception e)
{
System.err.println ("*** DisThreadedNetworkInterface close()() unexpected exception!");
System.err.println (TRACE_PREFIX + "close()() unexpected exception!");
}
}
public void killThread(Thread threadToKill)
......@@ -618,7 +618,7 @@ public class DisThreadedNetworkInterface
}
catch (InterruptedException ie)
{
System.err.println ("*** DisThreadedNetworkInterface threadToKill join() failed to wait for threadToKill to die");
System.err.println (TRACE_PREFIX + "threadToKill join() failed to wait for threadToKill to die");
System.err.flush();
ie.printStackTrace(System.err);
}
......@@ -822,31 +822,14 @@ public class DisThreadedNetworkInterface
TRACE_PREFIX = "[" + (DisThreadedNetworkInterface.class.getSimpleName() + " " + descriptor).trim() + "] ";
}
/**
* Main method for testing.
* @see <a href="https://docs.oracle.com/javase/tutorial/getStarted/application/index.html">Java Tutorials: A Closer Look at the "Hello World!" Application</a>
* @param args [address, port, descriptor] command-line arguments are an array of optional String parameters that are passed from execution environment during invocation
*/
public static void main(String[] args)
private void selfTest()
{
DisThreadedNetworkInterface disThreadedNetworkInterface;
System.out.println("*** DisThreadedNetworkInterface main() self test started...");
String selfTestDescriptor = "main() self test";
if ((args != null) && args.length == 3)
selfTestDescriptor = args[2];
if ((args == null) || (args.length == 0))
disThreadedNetworkInterface = new DisThreadedNetworkInterface( /* default address, port */ selfTestDescriptor);
else disThreadedNetworkInterface = new DisThreadedNetworkInterface(args[0], Integer.parseInt(args[1]), selfTestDescriptor);
System.out.println("*** DisThreadedNetworkInterface main() self test initialized...");
System.out.println(TRACE_PREFIX + "main() self test initialized...");
try
{
EntityStatePdu espdu = new EntityStatePdu();
espdu.setMarking("self test");
disThreadedNetworkInterface.setVerbose(true);
setVerbose(true);
DisThreadedNetworkInterface.PduListener pduListener;
pduListener = new DisThreadedNetworkInterface.PduListener()
{
......@@ -854,32 +837,52 @@ public class DisThreadedNetworkInterface
@Override
public void incomingPdu(Pdu newPdu)
{
System.out.println( "*** DisThreadedNetworkInterface main() pduListener.incomingPdu() received newPdu " + newPdu.getPduType().toString());
System.out.println(TRACE_PREFIX + "main() pduListener.incomingPdu() received newPdu " + newPdu.getPduType().toString());
System.out.flush();
}
};
disThreadedNetworkInterface.addListener(pduListener);
addListener(pduListener);
System.out.println("*** DisThreadedNetworkInterface main() self test sending espdu...");
disThreadedNetworkInterface.send(espdu);
System.out.println(TRACE_PREFIX + "self test sending espdu...");
send(espdu);
// briefly wait get response from threaded receiver
Thread.sleep(500L);
Thread.sleep(100L);
System.out.flush();
System.err.flush();
// all done, close() in finally block
}
catch(InterruptedException ex)
{
System.out.println("*** DisThreadedNetworkInterface main() self test InterruptedException " + ex.getMessage());
System.out.println("[DisThreadedNetworkInterface] main() self test InterruptedException " + ex.getMessage());
}
finally // carefully clean up following regular completion and any interruptions
{
if (disThreadedNetworkInterface != null)
disThreadedNetworkInterface.close();
close();
System.out.flush();
System.err.flush();
System.out.println("*** DisThreadedNetworkInterface main() self test complete.");
System.out.println("[DisThreadedNetworkInterface] main() self test complete.");
}
}
/**
* Main method provides support for testing.
* @see <a href="https://docs.oracle.com/javase/tutorial/getStarted/application/index.html">Java Tutorials: A Closer Look at the "Hello World!" Application</a>
* @param args [address, port, descriptor] command-line arguments are an array of optional String parameters that are passed from execution environment during invocation
*/
public static void main(String[] args)
{
System.out.println("[DisThreadedNetworkInterface] main() started...");
DisThreadedNetworkInterface disThreadedNetworkInterface;
String selfTestDescriptor = "main() self test";
if ((args != null) && args.length == 3)
selfTestDescriptor = args[2];
if ((args == null) || (args.length == 0))
disThreadedNetworkInterface = new DisThreadedNetworkInterface( /* default address, port */ selfTestDescriptor);
else disThreadedNetworkInterface = new DisThreadedNetworkInterface(args[0], Integer.parseInt(args[1]), selfTestDescriptor);
disThreadedNetworkInterface.selfTest();
}
}
......@@ -8,21 +8,21 @@ warning: [options] bootstrap class path not set in conjunction with -source 8
1 warning
compile-single:
run-single:
*** DisThreadedNetworkInterface main() self test started...
[DisThreadedNetworkInterface] main() started...
[DisThreadedNetworkInterface] using network interface Intel(R) Wi-Fi 6E AX210 160MHz
[DisThreadedNetworkInterface main() self test] datagramSocket.joinGroup address=239.1.2.3 port=3000 isConnected()=false createDatagramSocket() complete.
DisThreadedNetworkInterface createThreads() receiveThread.isAlive()=true
DisThreadedNetworkInterface createThreads() sendingThread.isAlive()=true
*** DisThreadedNetworkInterface main() self test initialized...
*** DisThreadedNetworkInterface main() self test sending espdu...
[DisThreadedNetworkInterface main() self test] createThreads() receiveThread.isAlive()=true
[DisThreadedNetworkInterface main() self test] createThreads() sendingThread.isAlive()=true
[DisThreadedNetworkInterface main() self test] main() self test initialized...
[DisThreadedNetworkInterface main() self test] self test sending espdu...
[DisThreadedNetworkInterface main() self test] [sending 1] DisPduType 01 ENTITY_STATE self test, size 144 bytes)
[DisThreadedNetworkInterface main() self test] [receipt 1] DisPduType 01 ENTITY_STATE self test, size 144 bytes)
received newPdu DisPduType 01 ENTITY_STATE
*** setKillSentinelAndInterrupts() killed=true sendingThread.isInterrupted()=false receiveThread.isInterrupted()=true
*** DisThreadedNetworkInterface close(): pdus2send.size()=0 baos.size()=0 dos.size()=144
[DisThreadedNetworkInterface main() self test] main() pduListener.incomingPdu() received newPdu DisPduType 01 ENTITY_STATE
*** setKillSentinelAndInterrupts() killed=true sendingThread.isInterrupted()=true receiveThread.isInterrupted()=true
[DisThreadedNetworkInterface main() self test] close(): pdus2send.size()=0 baos.size()=0 dos.size()=144
[DisThreadedNetworkInterface main() self test] datagramSocket.leaveGroup address=239.1.2.3 port=3000 isClosed()=true close() complete.
*** killThread() status: sendingThread.isAlive()=false sendingThread.isInterrupted()=true
*** killThread() status: receiveThread.isAlive()=false receiveThread.isInterrupted()=true
*** Thread close status: sendingThread.isAlive()=false receiveThread.isAlive()=false
*** DisThreadedNetworkInterface main() self test complete.
BUILD SUCCESSFUL (total time: 3 seconds)
[DisThreadedNetworkInterface] main() self test complete.
BUILD SUCCESSFUL (total time: 2 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