
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);
		}
	}
}

