package com.linkedin.parseq.trace;
import java.util.Map;
/**
* A shallow trace is a trace without any relationship information. Use
* {@link ShallowTraceBuilder} to construct new instances of this class.
*
* @author Jaroslaw Odzga (jodzga@linkedin.com)
*
*/
public interface ShallowTrace {
/**
* Returns the task name for this trace
*
* @return the task name for this trace
*/
String getName();
/**
* Returns if the trace will be hidden from the visualizations.
*
* @return if the trace is hidden
*/
boolean getHidden();
/**
* Returns if the trace will be system hidden from the visualizations.
*
* @return if the trace is system hidden.
*/
boolean getSystemHidden();
/**
* Returns a String representation of the value or error produced by the
* traced task. If the task was unfinished then the string representation
* will be null.
*
* @return String representation of the task's value
*/
String getValue();
/**
* Returns the result type of the task.
*
* @return the result type of the task
*/
ResultType getResultType();
/**
* Returns the time at which the task was started in nanoseconds. If
* the task had not yet started, this method will return {@code null}.
*
* @return the time at which this task was started or {@code null}
*/
Long getStartNanos();
/**
* Returns the time at which the task finished its run method in nanoseconds.
* If the task has not finished its run method yet this method will return
* {@code null}.
*
* @return the time at which this task finished its run method or {@code null}.
*/
Long getPendingNanos();
/**
* Returns the time at which the task was finished in nanoseconds. If the
* task had not yet finished, this method will return {@code null}.
*
* @return the time at which this task was finished or {@code null}
*/
Long getEndNanos();
/**
* Get the set of attributes related to this trace.
* @return the map of attributes related to this trace.
*/
Map<String, String> getAttributes();
/**
* Id of this trace.
* @return Id of this trace.
*/
Long getId();
/**
* Returns type (sideEffect, seq, par, timer etc) of the task
* @return type of the task
*/
String getTaskType();
}