package jpos.events;

public abstract class JposEvent extends java.util.EventObject
{
    public JposEvent(Object source)
    {
        super(source);
        this.source = source;
        updateSequenceNumber();
    }

    public Object getSource()
    {
        return source;
    }

    public void setSource(Object source)
    {
        this.source = source;
    }

    public synchronized final void updateSequenceNumber()
    {
        sequenceNumber = incrSequenceNumber();
    }

    public static final synchronized long incrSequenceNumber()
    {
        return ++globalSequenceNumber;
    }

    public int getWhen()
    {
        return when;
    }

    protected      Object source;
    protected      long   sequenceNumber;
    private static long   globalSequenceNumber = 0;
    private        int    when; // How is this set up???
}