// PART OF THE MACHINE SIMULATION. DO NOT CHANGE. package nachos.machine; /** * A controller for all the elevators in an elevator bank. The controller * accesses the elevator bank through an instance of ElevatorControls. */ public interface ElevatorControllerInterface extends Runnable { /** * Initialize this elevator controller. The controller will access the * elevator bank through controls. This constructor should return * immediately after this controller is initialized, but not until the * interupt handler is set. The controller will start receiving events * after this method returns, but potentially before run() is * called. * * @param controls the controller's interface to the elevator * bank. The controller must not attempt to access * the elevator bank in any other way. */ public void initialize(ElevatorControls controls); /** * Cause the controller to use the provided controls to receive and process * requests from riders. This method should not return, but instead should * call controls.finish() when the controller is finished. */ public void run(); /** The number of ticks doors should be held open before closing them. */ public static final int timeDoorsOpen = 500; /** Indicates an elevator intends to move down. */ public static final int dirDown = -1; /** Indicates an elevator intends not to move. */ public static final int dirNeither = 0; /** Indicates an elevator intends to move up. */ public static final int dirUp = 1; }