You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

185 lines
3.8 KiB
Java

// PDU.java
package support; // protocol support package
/**
This is the main class for protocol simulator.
@author Iain A. Robin, Kenneth J. Turner
@version 1.0 (1st September 1999, IAR): initial version
<br/> 1.4 (9th March 2006, KJT): updated for JDK 1.5
<br/> 1.5 (22nd July 2010, KJT): commenting and minor tidying
*/
public class PDU {
/** Protocol Data Unit type */
public String type = "";
/** Protocol Data Unit sequence number (-1 = none) */
public int seq = -1;
/** Protocol Data Unit user data length */
public int size = 0;
/** Protocol Data Unit payload as Service Data Unit */
public String sdu = "";
/** Protocol Data Unit source */
public ProtocolEntity source;
/** Protocol Data Unit destination */
public ProtocolEntity destination;
/**
Constructor for a PDU object.
*/
public PDU() {
}
/**
Constructor for a PDU object.
@param type PDU type
*/
public PDU(String type) {
this.type = type;
}
/**
Constructor for a PDU object.
@param type PDU type
@param seq PDU sequence number
*/
public PDU(String type, int seq) {
this.type = type;
this.seq = seq;
}
/**
Constructor for a PDU object.
@param type PDU type
@param sdu PDU payload as SDU
*/
public PDU(String type, String sdu) {
this.type = type;
this.sdu = sdu;
}
/**
Constructor for a PDU object.
@param type PDU type
@param seq PDU sequence number
@param sdu PDU payload as SDU
*/
public PDU(String type, int seq, String sdu) {
this.type = type;
this.seq = seq;
this.sdu = sdu;
}
/**
Get the destination attribute of a PDU object.
@return PDU destination
*/
public ProtocolEntity getDestination() {
return(destination);
}
/**
Get the identifier attribute of a PDU object.
@return PDU identifier (i.e. label)
*/
public String getID() {
return(getLabel());
}
/**
Get the label attribute of the PDU object, identifying an arrow in a time
sequence diagram.
@return PDU label
*/
public String getLabel() {
String label = type; // parameter if any in brackets
if (seq >= 0)
label += "(" + seq + ")"; // show seq number parameter
else if (!sdu.equals(""))
label += "(" + sdu + ")"; // show SDU parameter
return(label);
}
/**
Get the SDU attribute of a PDU object.
@return PDU payload as SDU
*/
public String getSDU() {
return(sdu);
}
/**
Get the source attribute of a PDU object.
@return The source value
*/
public ProtocolEntity getSource() {
return(source);
}
/**
Check whether a PDU matches this one.
@param pdu PDU to be checked
@return true/false if PDU matches/does not match this one
*/
public boolean matches(PDU pdu) {
if (pdu == null)
return(false);
return(
type.equals(pdu.type) && source == pdu.getSource() && seq == pdu.seq);
}
/**
Sets the destination attribute of a PDU object.
@param destination PDU destination
*/
public void setDestination(ProtocolEntity destination) {
this.destination = destination;
}
/**
Sets the SDU attribute of athe PDU object.
*
@param sdu PDU payload as SDU
*/
public void setSDU(String sdu) {
this.sdu = sdu;
}
/**
Set the source attribute of a PDU object.
@param source PDU source
*/
public void setSource(ProtocolEntity source) {
this.source = source;
}
/**
Convert a PDU to a string representation.
@return string representation of a PDU
*/
public String toString() {
return ("PDU <Type " + type + ", Seq " + seq + ", Data " + sdu + ">");
}
}