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.waterken.trace;
004    
005    import java.lang.reflect.Member;
006    
007    import org.ref_send.log.Trace;
008    
009    /**
010     * Permission to produce stack traces.
011     */
012    public interface
013    Tracer {
014        
015        /**
016         * Gets the current timestamp.
017         * @return difference, measured in milliseconds, between now and midnight,
018         *         January 1, 1970 UTC
019         */
020        long timestamp();
021        
022        /**
023         * Gets the text message from an exception.
024         * @param e exception to extract message from
025         */
026        String readException(Throwable e);
027        
028        /**
029         * Gets the stack trace for a given exception.
030         * @param e exception to trace
031         */
032        Trace traceException(Throwable e);
033        
034        /**
035         * Produces a dummy stack trace for a method.
036         * @param lambda    sole member of the dummy stack trace
037         */
038        Trace traceMember(Member lambda);
039    
040        /**
041         * Gets the current stack trace.
042         */
043        Trace traceHere();
044    }