package ei.engine.network.response;


public abstract class ResponseEvent {
	private Object rsp = null;
	
	public synchronized boolean handleResponse(Object rsp) {
		this.rsp = rsp;
		notify();
		return true;
	}
	
	public synchronized void waitForResponse() {
		while(!gotResponse()) {
			try {
				this.wait();
			} catch (InterruptedException e) {
			}
		}
		
		responseEvent(rsp);
	}
	
	public void handleResponse(){
		if(gotResponse()){
			responseEvent(rsp);
		}
	}
	
	public boolean gotResponse(){
		return (rsp != null);
	}
	
	protected abstract void responseEvent(Object rsp);
}
