TSim
Class TSimInterface

java.lang.Object
  |
  +--TSim.TSimInterface

public class TSimInterface
extends java.lang.Object
implements java.lang.Runnable

The TSimInterface is the intended interface between TSim and the laboration. It handles the extraction of information from TSim and provides methods for manipulating trains, sensors and switches.


Field Summary
protected  SynchronizedFIFO commandFIFO
           
protected  SynchronizedSensorVector sensorVec
           
protected  TSimStream sTSim
           
static int SWITCH_LEFT
           
static int SWITCH_RIGHT
           
protected  SynchronizedTrainEventVector trainVec
           
 
Constructor Summary
TSimInterface()
          Create a new TSimInterface
 
Method Summary
 SensorEvent getSensor(int trainId)
          Wait until the specified train passes a sensor.
protected  void reportTrainEvent(TrainEvent e)
          Helper method that reports an error event on standard error.
 void run()
           
 void setSpeed(int trainId, int speed)
          Method that issues a command to a secific train to set its speed to the given value.
 void setSwitch(int xPos, int yPos, int switchPos)
          Set the position of the specified switch.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SWITCH_LEFT

public static final int SWITCH_LEFT

SWITCH_RIGHT

public static final int SWITCH_RIGHT

commandFIFO

protected SynchronizedFIFO commandFIFO

trainVec

protected SynchronizedTrainEventVector trainVec

sensorVec

protected SynchronizedSensorVector sensorVec

sTSim

protected TSimStream sTSim
Constructor Detail

TSimInterface

public TSimInterface()
Create a new TSimInterface
Method Detail

run

public void run()
Specified by:
run in interface java.lang.Runnable

reportTrainEvent

protected void reportTrainEvent(TrainEvent e)
Helper method that reports an error event on standard error.
Parameters:
e - the error event.

setSpeed

public void setSpeed(int trainId,
                     int speed)
              throws CommandException
Method that issues a command to a secific train to set its speed to the given value.
Parameters:
trainId - the id of the train to be affected by the command.
speed - the new speed of the train.
Throws:
CommandException - if the supplied id was false (NO_SUCH_TRAIN), if the speed was illegal (ILLEGAL_SPEED) or if the train had crashed.

setSwitch

public void setSwitch(int xPos,
                      int yPos,
                      int switchPos)
               throws CommandException
Set the position of the specified switch. Valid positions are SWITCH_LEFT and SWITCH_RIGHT.
Parameters:
xPos - the x coordinate of the switch.
yPos - the y coordinate of the switch.
switchPos - the new position of the switch.

getSensor

public SensorEvent getSensor(int trainId)
                      throws CommandException
Wait until the specified train passes a sensor.
Parameters:
trainId - the id of the train to wait for.
Returns:
a SensorEvent representing the information about the event