-
/*
* Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
*
/**
*
- * Describe a raw Data Packet, this is how a packet is
- * received from the network and how it will be transmitted. It
- * essentially wraps the raw bytestream
+ * Describe a raw Data Packet, this is how a packet is received from the network
+ * and how it will be transmitted. It essentially wraps the raw bytestream
*
*/
public class RawPacket {
private byte[] packetData;
- private LinkEncap encap;
- private TimeStamp incomingTime;
- private TimeStamp copyTime;
- private Map props;
+ private final LinkEncap encap;
+ private final TimeStamp incomingTime;
+ private final TimeStamp copyTime;
+ private Map<Object, Object> props;
private NodeConnector incomingNodeConnector;
private NodeConnector outgoingNodeConnector;
/**
- * If the packet is being sent this parameter tells where the
- * packet is sent toward
+ * If the packet is being sent this parameter tells where the packet is sent
+ * toward
*
*
* @return the NodeConnector toward where the packet is being sent
/**
* Setter method for OutGoing NodeConnector
*
- * @param outgoingNodeConnector NodeConnector toward where the
- * packet is travelling
+ * @param outgoingNodeConnector
+ * NodeConnector toward where the packet is travelling
*/
public void setOutgoingNodeConnector(NodeConnector outgoingNodeConnector) {
this.outgoingNodeConnector = outgoingNodeConnector;
/**
* Setter for Incoming NodeConnector
*
- * @param incomingNodeConnector NodeConnector to be used and incoming one
+ * @param incomingNodeConnector
+ * NodeConnector to be used and incoming one
*/
public void setIncomingNodeConnector(NodeConnector incomingNodeConnector) {
this.incomingNodeConnector = incomingNodeConnector;
/**
* Retrieve a given property attached to the packet, if exits of course
*
- * @param key Key to retrieve the wanted property attached to the packet
+ * @param key
+ * Key to retrieve the wanted property attached to the packet
*
* @return The property attached to the packet
*/
/**
* Generic data associated to the data packet
*
- * @param key key for the association
- * @param value value associated to the key
+ * @param key
+ * key for the association
+ * @param value
+ * value associated to the key
*/
public void setProps(Object key, Object value) {
if (this.props == null) {
- this.props = new HashMap();
+ this.props = new HashMap<Object, Object>();
}
this.props.put(key, value);
/**
* Constructor for RawPacket
*
- * @param data content of the packet as bytestream
- * @param e datalink encapsulation for the packet
+ * @param data
+ * content of the packet as bytestream
+ * @param e
+ * datalink encapsulation for the packet
*
*/
public RawPacket(byte[] data, LinkEncap e) throws ConstructionException {
}
/**
- * Copy Constructor for RawPacket, it perform a copy of the packet
- * so each packet can be modified indipendently without worrying
- * that source packet content is touched
+ * Copy Constructor for RawPacket, it performs a copy of the packet so each
+ * packet can be modified independently without worrying that source packet
+ * content is touched
*
- * @param src packet to copy data from
+ * @param src
+ * packet to copy data from
*
*/
public RawPacket(RawPacket src) throws ConstructionException {
}
if (src.getPacketData() != null) {
this.packetData = new byte[src.getPacketData().length];
- System.arraycopy(src.getPacketData(), 0, this.packetData, 0, src
- .getPacketData().length);
+ System.arraycopy(src.getPacketData(), 0, this.packetData, 0,
+ src.getPacketData().length);
} else {
throw new ConstructionException("Empty packetData");
}
this.incomingTime = src.getIncomingTime();
this.incomingNodeConnector = src.getIncomingNodeConnector();
this.outgoingNodeConnector = src.getOutgoingNodeConnector();
- this.props = (src.props == null ? null : new HashMap(src.props));
+ this.props = (src.props == null ? null : new HashMap<Object, Object>(
+ src.props));
this.copyTime = new TimeStamp(System.currentTimeMillis(), "CopyTime");
}
/**
* Constructor for RawPacket with Ethernet encapsulation
*
- * @param data content of the packet as bytestream
+ * @param data
+ * content of the packet as bytestream
*
*/
public RawPacket(byte[] data) throws ConstructionException {
}
/**
- * Read the timestamp when the packet has entered the system
+ * Read the time stamp when the packet has entered the system
*
- * @return The timestamp when the packet has entered the system
+ * @return The time stamp when the packet has entered the system
*/
public TimeStamp getIncomingTime() {
return this.incomingTime;
/**
* Read the packet encapsulation
*
- * @return The encapsulation for the raw packet, necessary to
- * start parsing the packet
+ * @return The encapsulation for the raw packet, necessary to start parsing
+ * the packet
*/
public LinkEncap getEncap() {
return this.encap;
public byte[] getPacketData() {
return this.packetData;
}
+
+ /**
+ * Returns the time at which the current instance of RawPacket was created
+ * as a copy of the original one.
+ *
+ * @return The time stamp at which this RawPacket instance was created. null
+ * if this is the original instance.
+ */
+ public TimeStamp getCopyTime() {
+ return this.copyTime;
+ }
}