From 3313ec2e24631e58161ca915714afdf129184268 Mon Sep 17 00:00:00 2001
From: jonathanboron <jonathanboron@172.20.148.95>
Date: Mon, 2 Sep 2019 17:57:03 -0700
Subject: [PATCH] HW4 update 2, sender class more flexible

---
 .../homework4/Boron/BoronPduSender.java       | 112 ++++++++++--------
 1 file changed, 60 insertions(+), 52 deletions(-)

diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework4/Boron/BoronPduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework4/Boron/BoronPduSender.java
index a55ba33b09..c37d6158e5 100644
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework4/Boron/BoronPduSender.java
+++ b/assignments/src/MV3500Cohort2019JulySeptember/homework4/Boron/BoronPduSender.java
@@ -24,7 +24,6 @@ public class BoronPduSender
     public static final int    DEFAULT_MULTICAST_PORT    = 3000;
 	
     private int port;
-    private Random rand;
     InetAddress multicastAddress;
 
     public BoronPduSender(int port, String multicast) {
@@ -42,13 +41,56 @@ public class BoronPduSender
         }
     }
 
-    public void run()
+    public void run(Pdu aPdu)
     {
-        BoronEntityStatePduCreator espduCreator = new BoronEntityStatePduCreator();
-        rand = new Random();
-        System.out.println("DisExamplesOpenDis7.AllPduSender started...");
 
+        System.out.println("DisExamplesOpenDis7.AllPduSender started...");
         System.out.println("Generate PDUs and note issues, if any...");
+
+        // Send the PDUs we created
+        try
+        {
+            InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
+            MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
+            socket.joinGroup(localMulticastAddress);
+                
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            DataOutputStream dos = new DataOutputStream(baos);
+            byte[] buffer;
+
+            //Pdu aPdu = generatedPdusList.get(idx);
+            aPdu.marshal(dos);
+
+            buffer = baos.toByteArray();
+            DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT);
+            socket.send(packet);
+            try 
+            {
+                Thread.sleep(100L);
+            } catch (InterruptedException ex) {
+            }
+            String currentPduTypeValuePadded = String.format("%2s", aPdu.getPduType().getValue());
+            String currentPduTypePadded = String.format("%-34s", aPdu.getPduType()); // - indicates right padding of whitespace
+            System.out.print  ("Sent DIS PDU " + currentPduTypeValuePadded + " " + currentPduTypePadded );
+            System.out.println(" of type " + aPdu.getClass().getName());
+
+         }
+        catch (IOException e)
+	{
+            System.out.println(e);
+        }
+            // write the PDUs out to an XML file.
+            //PduContainer container = new PduContainer();
+            //container.setPdus(generatedPdus);
+            //container.marshallToXml("examplePdus.xml");
+    }
+
+    public static void main(String args[])
+	{
+            
+        BoronEntityStatePduCreator espduCreator = new BoronEntityStatePduCreator();
+        Random rand = new Random();            
+            
         List<Pdu> generatedPdusList = new ArrayList<>();
         
         for (int i = 0; i < 3; i++)
@@ -77,64 +119,30 @@ public class BoronPduSender
             
             generatedPdusList.add(espduCreator.newPDU(id, ForceID.FRIENDLY, l, v, o));  
         }
-        // Send the PDUs we created
+        
         System.out.println("Send the " + generatedPdusList.size() + " PDUs we created...");
-        try
+            
+        if (args.length == 2)
         {
-            InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
-            MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
-            socket.joinGroup(localMulticastAddress);
-
-            for (int idx = 0; idx < generatedPdusList.size(); idx++)
+            BoronPduSender sender = new BoronPduSender(Integer.parseInt(args[0]), args[1]);
+            for (int i = 0; i < generatedPdusList.size(); i++)
             {
                 Pdu aPdu = generatedPdusList.get(0);
-                
-                ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                DataOutputStream dos = new DataOutputStream(baos);
-                byte[] buffer;
-
-                 //Pdu aPdu = generatedPdusList.get(idx);
-                aPdu.marshal(dos);
-
-                buffer = baos.toByteArray();
-                DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT);
-                socket.send(packet);
-                try 
-                {
-                    Thread.sleep(100L);
-                } catch (InterruptedException ex) {
-                }
-                String currentPduTypeValuePadded = String.format("%2s", aPdu.getPduType().getValue());
-                String currentPduTypePadded = String.format("%-34s", aPdu.getPduType()); // - indicates right padding of whitespace
-                System.out.print  ("Sent DIS PDU " + currentPduTypeValuePadded + " " + currentPduTypePadded );
-                 System.out.println(" of type " + aPdu.getClass().getName());
-                 
-                 generatedPdusList.remove(0);
+                sender.run(aPdu);
+                generatedPdusList.remove(0);
             }
-         }
-        catch (IOException e)
-	{
-            System.out.println(e);
-        }
-            // write the PDUs out to an XML file.
-            //PduContainer container = new PduContainer();
-            //container.setPdus(generatedPdus);
-            //container.marshallToXml("examplePdus.xml");
-    }
-
-    public static void main(String args[])
-	{
-        if (args.length == 2)
-        {
-            BoronPduSender sender = new BoronPduSender(Integer.parseInt(args[0]), args[1]);
-            sender.run();
         } 
         else
         {
             System.out.println("Usage:   AllPduSender <port> <multicast group>");
             System.out.println("Default: AllPduSender  " + DEFAULT_MULTICAST_PORT + "   " + DEFAULT_MULTICAST_ADDRESS);
             BoronPduSender sender = new  BoronPduSender(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS);
-            sender.run();
+            for (int i = 0; i < generatedPdusList.size(); i++)
+            {
+                Pdu aPdu = generatedPdusList.get(0);
+                sender.run(aPdu);
+                generatedPdusList.remove(0);
+            }
         }
         System.out.println("DisExamplesOpenDis7.AllPduSender complete.");
     }
-- 
GitLab