namespace com.sleepycat.je.utilint;

class EventTrace
{
  depend de.ovgu.cide.jakutil.*;
    static private int MAX_EVENTS = 100;

    static public final boolean TRACE_EVENTS = false;

    static int currentEvent = 0;

    static final EventTrace[] events = new EventTrace[MAX_EVENTS];

    static final int[] threadIdHashes = new int[MAX_EVENTS];

    static boolean disableEvents = false;

    protected String comment;

    public EventTrace(String comment) {
	this.comment = comment;
    }



    public String toString() {
	return comment;
    }

    static public void addEvent(EventTrace event) {
	if (disableEvents) {
	    return;
	}
	int nextEventIdx = currentEvent++ % MAX_EVENTS;
	events[nextEventIdx] = event;
	threadIdHashes[nextEventIdx] = System.identityHashCode(Thread.currentThread());
    }

    static public void addEvent(String comment) {
	if (disableEvents) {
	    return;
	}
	addEvent(new EventTrace(comment));
    }

    static public void dumpEvents() {
	if (disableEvents) {
	    return;
	}
	System.out.println("----- Event Dump -----");
	EventTrace[] oldEvents = events;
	int[] oldThreadIdHashes = threadIdHashes;
	disableEvents = true;
	int j = 0;
	for (int i = currentEvent; j < MAX_EVENTS; i++) {
	    EventTrace ev = oldEvents[i % MAX_EVENTS];
	    if (ev != null) {
		int thisEventIdx = i % MAX_EVENTS;
		System.out.print(oldThreadIdHashes[thisEventIdx] + " ");
		System.out.println(j + "(" + thisEventIdx + "): " + ev);
	    }
	    j++;
	}
    }

}
