www.pudn.com > JAVIS-0.3.zip > LinkEvent.java
package fileio.event;
import fileio.event.Event;
import animation.VisualElement;
import util.Colour;
import java.io.Reader;
import java.io.IOException;
import animation.Link;
import util.Input;
import util.Debug;
/**
LinkEvent is the class used to represent link events in the trace file
@author Steven Vischer
@version 1.0
*/
public class LinkEvent extends Event {
int m_src;
int m_dest;
double m_bandwidth;
double m_delay;
int m_state;
Colour m_colour;
public LinkEvent() {
m_src=0;
m_dest=0;
m_bandwidth=0;
m_delay=0;
m_state=Link.UP;
m_colour=new Colour();
}
public int getSource() {
return m_src;
}
public int getDestination() {
return m_dest;
}
public int getStatus() {
return m_state;
}
public Colour getColour() {
return m_colour;
}
/**
The 'read' function for LinkEvent. This reads in all the flags for a
link event and sets this object's member variables to the correct
values.
*/
public void read(Reader reader) {
int i=0;
int ch=0;
try {
while (true) {
ch=Input.skipSpaces(reader);
if (ch==-1) return;
if (ch!='-') return;
ch=reader.read();
switch((char)ch) {
case 's': m_src=Input.getInteger(reader);
break;
case 'd': m_dest=Input.getInteger(reader); break;
case 'S': {
String s_string=Input.getString(reader);
if (s_string.trim().equals("UP"))
m_state=Link.UP;
else
if (s_string.trim().equals("DOWN"))
m_state=Link.DOWN;
}
break;
case 'c': {
String newcolour=Input.getString(reader).trim();
m_colour=new Colour(newcolour);
}
break;
case 'r': m_bandwidth=Input.getDouble(reader); break;
// DOESN'T WORK if bandwidth specified using
// byte parameters !!
case 'D': m_delay=Input.getDouble(reader); break;
case 'o': { // Skip orientation
ch=Input.skipSpaces(reader);
while(ch!=' ' && ch!='\n') {
ch=reader.read();
}
break;
}
default: break;
}
}
}
catch(IOException e) {
Debug.out.println("Error!");
}
Debug.out.println(m_src + " " + m_dest + " " + m_bandwidth + " " +
m_delay + " " + m_state);
}
/**
This function returns a link object with the correct settings, ready
for use in the animation.
@param newlink The link that is created and returned
*/
public VisualElement returnElement() {
Link newlink=new Link();
newlink.setSource(m_src);
newlink.setDestination(m_dest);
newlink.setBandwidth(m_bandwidth);
newlink.setDelay(m_delay);
newlink.setStatus(m_state);
newlink.setColour(m_colour);
return newlink;
}
/**
This is a simple little function used to display the details of the link
for debugging purposes
*/
public String toString() {
return "L: "+m_time+" "+m_src+" "+m_dest+" "+m_state;
}
}