Skip to content
Snippets Groups Projects
Commit df33c124 authored by codyt's avatar codyt
Browse files

Tackett Assignment 3 Upload

parent 5ebb387b
No related branches found
No related tags found
No related merge requests found
// package edu.nps.moves.examples; // copy example from OpenDIS distribution, modify to serve as template
import java.io.*;
import java.net.*;
import java.util.*;
import edu.nps.moves.dis.*;
import edu.nps.moves.disenum.*;
/**
* This is an example that sends many/most types of PDUs. Useful for testing standards
* compliance or getting a full set of PDUs. It also writes the generated PDUs to
* an XML file.
*
* @author DMcG
* @version $Id:$
*/
public class Tackett_Assignement3_OpenDisPduSender {
public static final int PORT = 3000;
public static final String MULTICAST_ADDRESS = "239.1.2.3";
private int port;
InetAddress multicastAddress;
public Tackett_Assignement3_OpenDisPduSender(int port, String multicast)
{
try {
this.port = port;
multicastAddress = InetAddress.getByName(multicast);
if (!multicastAddress.isMulticastAddress()) {
System.out.println("Not a multicast address: " + multicast);
}
}
catch (UnknownHostException e) {
System.out.println("Unable to open socket: " + e);
}
}
public void run() {
try {
List<Pdu> generatedPdus = new ArrayList<>();
// Loop through all the enumerated PDU types, create a PDU for each type,
// and add that PDU to a list.
for (PduType pdu : PduType.values()) {
Pdu aPdu = null;
switch (pdu) {
case ENTITY_STATE:
// TODO continue to add unit tests
EntityStatePdu entityStatePdu = new EntityStatePdu();
Marking espduMarking = new Marking();
espduMarking.setCharactersString("Testing 123");
// TODO libary should warn if > 11 characters
entityStatePdu.setMarking(espduMarking);
EntityID espduEntityID = new EntityID();
espduEntityID.setSite(1);
espduEntityID.setApplication(2);
espduEntityID.setEntity(3);
entityStatePdu.setEntityID(espduEntityID);
// TODO consider adding utility methods to Open-DIS
aPdu = entityStatePdu;
break;
case COMMENT:
aPdu = new CommentPdu();
break;
case FIRE:
aPdu = new FirePdu();
break;
case DETONATION:
aPdu = new DetonationPdu();
break;
case COLLISION:
aPdu = new CollisionPdu();
break;
case SERVICE_REQUEST:
aPdu = new ServiceRequestPdu();
break;
case RESUPPLY_OFFER:
aPdu = new ResupplyOfferPdu();
break;
case RESUPPLY_RECEIVED:
aPdu = new ResupplyReceivedPdu();
break;
case RESUPPLY_CANCEL:
aPdu = new ResupplyCancelPdu();
break;
case REPAIR_COMPLETE:
aPdu = new RepairCompletePdu();
break;
case REPAIR_RESPONSE:
aPdu = new RepairResponsePdu();
break;
case CREATE_ENTITY:
aPdu = new CreateEntityPdu();
break;
case REMOVE_ENTITY:
aPdu = new RemoveEntityPdu();
break;
case START_RESUME:
aPdu = new StartResumePdu();
break;
case STOP_FREEZE:
aPdu = new StopFreezePdu();
break;
case ACKNOWLEDGE:
aPdu = new AcknowledgePdu();
break;
case ACTION_REQUEST:
aPdu = new ActionRequestPdu();
break;
default:
System.out.print("PDU of type " + pdu + " not supported, created or sent ");
System.out.println();
}
if (aPdu != null) {
generatedPdus.add(aPdu);
}
}
// Sort the created PDUs by class name
Collections.sort(generatedPdus, new edu.nps.moves.examples.ClassNameComparator());
// Send the PDUs we created
InetAddress localMulticastAddress = InetAddress.getByName(MULTICAST_ADDRESS);
MulticastSocket socket = new MulticastSocket(PORT);
socket.joinGroup(localMulticastAddress);
for (int idx = 0; idx < generatedPdus.size(); idx++) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
byte[] buffer;
Pdu aPdu = generatedPdus.get(idx);
aPdu.marshal(dos);
buffer = baos.toByteArray();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, PORT);
socket.send(packet);
System.out.println("Sent PDU of type " + aPdu.getClass().getName());
}
// write the PDUs out to an XML file.
//PduContainer container = new PduContainer();
//container.setPdus(generatedPdus);
//container.marshallToXml("examplePdus.xml");
}
catch (IOException e) {
System.out.println(e);
}
}
public static void main(String args[]) {
if (args.length == 2) {
OpenDisPduSender sender = new OpenDisPduSender(Integer.parseInt(args[0]), args[1]);
sender.run();
} else {
System.out.println("Usage: OpenDisPduSender <port> <multicast group>");
System.out.println("Default: OpenDisPduSender " + PORT + " " + MULTICAST_ADDRESS);
OpenDisPduSender sender = new OpenDisPduSender(PORT, MULTICAST_ADDRESS);
sender.run();
}
}
}
File added
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