001    // Copyright 2008 Waterken Inc. under the terms of the MIT X license
002    // found at http://www.opensource.org/licenses/mit-license.html
003    package org.ref_send.log;
004    
005    import java.io.Serializable;
006    
007    import org.joe_e.Powerless;
008    import org.joe_e.Struct;
009    import org.ref_send.Record;
010    import org.ref_send.deserializer;
011    import org.ref_send.name;
012    
013    /**
014     * Logs an event.
015     */
016    public class
017    Event extends Struct implements Powerless, Record, Serializable {
018        static private final long serialVersionUID = 1L;
019        
020        /**
021         * event identifier
022         */
023        public final Anchor anchor;
024    
025        /**
026         * difference, measured in milliseconds, between the time the event occurred
027         * and midnight, January 1, 1970 UTC (optional)
028         */
029        public final Long timestamp;
030        
031        /**
032         * trace of the call site that produced the event (optional)
033         */
034        public final Trace trace;
035        
036        /**
037         * Constructs an instance.
038         * @param anchor    {@link #anchor}
039         * @param timestamp {@link #timestamp}
040         * @param trace     {@link #trace}
041         */
042        public @deserializer
043        Event(@name("anchor") final Anchor anchor,
044              @name("timestamp") final Long timestamp,
045              @name("trace") final Trace trace) {
046            this.anchor = anchor;
047            this.timestamp = timestamp;
048            this.trace = trace;
049        }
050    }