edu.nps.moves.disutil
Class PduMulticastReceiver

java.lang.Object
  extended by edu.nps.moves.disutil.UdpServer
      extended by edu.nps.moves.disutil.PduMulticastReceiver

public class PduMulticastReceiver
extends UdpServer

A UDP server that receives DIS PDU packets and fires off events to interested parties. The event firing is on the socket-processing thread, so be quick about handling the events.

Using the new ByteBuffer-based marshalling is more efficient than the old IO Streams technique, and it also supports receiving several DIS PDUs in a single UDP datagram. Each datagram is scraped sequentially so that if one PDU is placed after another, they will each be unmarshalled, and an event will be fired off for each one in turn.

Since:
??
Author:
Robert Harder

Nested Class Summary
static class PduMulticastReceiver.Event
           
static interface PduMulticastReceiver.Listener
           
 
Nested classes/interfaces inherited from class edu.nps.moves.disutil.UdpServer
UdpServer.Adapter, UdpServer.State
 
Field Summary
 
Fields inherited from class edu.nps.moves.disutil.UdpServer
GROUPS_PROP, PORT_PROP
 
Constructor Summary
PduMulticastReceiver()
          Creates a new instance of PduMulticastReceiver that is in the UdpServer.State.STOPPED state
 
Method Summary
 void addPduMulticastReceiverListener(PduMulticastReceiver.Listener l)
          Adds a PduMulticastReceiver.Listener.
protected  void firePduReceived()
          Fires event on calling thread.
 Pdu getPdu()
          Returns the last parsed PDU.
 boolean getUseByteBuffer()
          Returns whether or not the ByteBuffer marshalling technique is being used (default).
 boolean getUseFastPdu()
          Returns whether or not FastEspdu objects are created which use less memory since all their fields are flattened to primitives instead of several objects.
 void removePduMulticastReceiverListener(PduMulticastReceiver.Listener l)
          Removes a PduMulticastReceiver.Listener.
 void setUseByteBuffer(boolean use)
          Sets whether or not to use the more efficient ByteBuffer marshalling technique (default).
 void setUseFastEspdu(boolean use)
          Sets whether or not to generate the Fast Espdu packets (all primitive fields).
 
Methods inherited from class edu.nps.moves.disutil.UdpServer
addPropertyChangeListener, addPropertyChangeListener, addUdpServerListener, fireProperties, firePropertyChange, fireState, fireUdpServerPacketReceived, fireUdpServerStateChanged, getGroups, getLoggingLevel, getPacket, getPort, getReceiveBufferSize, getState, recordState, removePropertyChangeListener, removePropertyChangeListener, removeUdpServerListener, reset, runServer, setGroups, setLoggingLevel, setPort, setReceiveBufferSize, start, stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PduMulticastReceiver

public PduMulticastReceiver()
Creates a new instance of PduMulticastReceiver that is in the UdpServer.State.STOPPED state

Method Detail

getPdu

public Pdu getPdu()
Returns the last parsed PDU.

Returns:
PDU object

getUseByteBuffer

public boolean getUseByteBuffer()
Returns whether or not the ByteBuffer marshalling technique is being used (default).

Returns:
is the byte buffer marshalling technique being used?

setUseByteBuffer

public void setUseByteBuffer(boolean use)
Sets whether or not to use the more efficient ByteBuffer marshalling technique (default).

Parameters:
use - whether or not to use it

getUseFastPdu

public boolean getUseFastPdu()
Returns whether or not FastEspdu objects are created which use less memory since all their fields are flattened to primitives instead of several objects.

Returns:
using or not using fast pdu

setUseFastEspdu

public void setUseFastEspdu(boolean use)
Sets whether or not to generate the Fast Espdu packets (all primitive fields).

Parameters:
use -

addPduMulticastReceiverListener

public void addPduMulticastReceiverListener(PduMulticastReceiver.Listener l)
Adds a PduMulticastReceiver.Listener.

Parameters:
l - the UdpServer.Listener

removePduMulticastReceiverListener

public void removePduMulticastReceiverListener(PduMulticastReceiver.Listener l)
Removes a PduMulticastReceiver.Listener.

Parameters:
l - the UdpServer.Listener

firePduReceived

protected void firePduReceived()
Fires event on calling thread.