public class User extends EventHandler { private double rate; private Server s; private TimePeriodExp random; private FutureEventList future; private int ID = 5; public User(Server s, double rate, FutureEventList eq ){ this.s = s; this.rate = rate; future = eq; random = new TimePeriodExp(rate); System.out.println("User Rate: " + rate); } protected void handleEvent(Event e){ System.out.println("User: action " + e.action + " ID " + e.data + " time " + e.time); // forward the user request to the associated server if(e.action == Event.USER_REQ) { e.action = Event.NEW_REQ; e.target = s; future.enter(e); // foresee the next request to be generated by the user Event newEvent = new Event(); newEvent.time = e.time + random.delay(); newEvent.target = this; newEvent.action = Event.USER_REQ; newEvent.data = ID; ID++; future.enter(newEvent); } } }