/*******************************************************************************
* Copyright (c) 2012, 2013 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Francois Chouinard - Initial API and implementation
*******************************************************************************/
package fr.inria.linuxtools.tmf.core.event;
import org.eclipse.core.runtime.IAdaptable;
import fr.inria.linuxtools.tmf.core.timestamp.ITmfTimestamp;
import fr.inria.linuxtools.tmf.core.trace.ITmfTrace;
/**
* The generic event structure in TMF. In its canonical form, an event has:
* <ul>
* <li>a parent trace
* <li>a rank (order within the trace)
* <li>a timestamp
* <li>a source (reporting component)
* <li>a type
* <li>a content (payload)
* </ul>
* For convenience, a free-form reference field is also provided. It could be
* used as e.g. a location marker (filename:lineno) to indicate where the event
* was generated.
*
* @version 1.0
* @author Francois Chouinard
*
* @see ITmfTimestamp
* @see ITmfEventType
* @see ITmfEventField
* @see TmfEvent
*/
public interface ITmfEvent extends IAdaptable {
// ------------------------------------------------------------------------
// Constants
// ------------------------------------------------------------------------
/**
* Pre-defined event timestamp attribute (for searching &filtering purposes)
*/
public static final String EVENT_FIELD_TIMESTAMP = ":timestamp:"; //$NON-NLS-1$
/**
* Pre-defined event source attribute (for searching &filtering purposes)
*/
public static final String EVENT_FIELD_SOURCE = ":source:"; //$NON-NLS-1$
/**
* Pre-defined event type attribute (for searching &filtering purposes)
*/
public static final String EVENT_FIELD_TYPE = ":type:"; //$NON-NLS-1$
/**
* Pre-defined event content attribute (for searching &filtering purposes)
*/
public static final String EVENT_FIELD_CONTENT = ":content:"; //$NON-NLS-1$
/**
* Pre-defined event reference attribute (for searching &filtering purposes)
*/
public static final String EVENT_FIELD_REFERENCE = ":reference:"; //$NON-NLS-1$
// ------------------------------------------------------------------------
// Getters
// ------------------------------------------------------------------------
/**
* @return the trace that 'owns' the event
*/
ITmfTrace getTrace();
/**
* @return the event rank within the parent trace
*/
long getRank();
/**
* @return the event timestamp
* @since 2.0
*/
ITmfTimestamp getTimestamp();
/**
* @return the event source
*/
String getSource();
/**
* @return the event type
*/
ITmfEventType getType();
/**
* @return the event content
*/
ITmfEventField getContent();
/**
* @return the event reference
*/
String getReference();
}