import EventQueue;

class TimerThread extends Thread {

    static final int EVT_TIMEOUT = 129;

    private EventQueue equeue;
    private Object sobject;
    private long wtim;
    private String myname;

    public TimerThread(EventQueue q, Object s, long t, String masterName) {
	myname = masterName+".TimerThread["+t+"]";
        this.setName(myname);
	equeue = q;
	sobject = s;
	wtim = t;
    }

    public void run() {
	try {
	    sleep(wtim);
	    equeue.append(EVT_TIMEOUT,0,sobject);
	}
	catch (Exception e) { } // System.out.println(this.getName()+": Exception: "+e);
    }
}

public class EventTimeOut {

    private TimerThread tthread;
    private String myname;

    public EventTimeOut(EventQueue q, Object s, long t, String masterName) {
	myname = masterName+".EventTimeOut";
	tthread = new TimerThread(q,s,t,myname);
	tthread.start();
    }

    public EventTimeOut(EventQueue q, Object s, long t) {
	this(q,s,t,"<unnamed>");
    }

    public void cancel() {
	tthread.interrupt();
    }


}
