blob: 65d6ea94935435c4c3719708643c97565426e10e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 École Polytechnique de Montréal, Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Geneviève Bastien - Initial API and implementation
* Matthew Khouzam - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.tmf.core.trace;
import java.util.Set;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.tmf.core.event.ITmfEventType;
/**
* This interface should be implemented by all trace classes who have a way to
* know in advance what events it may contain. It allows analyses and other
* external components to ask the list of events for the trace might contain.
*
* The methods from this interface will typically be called to determine whether
* or not it is worth reading a trace. If we can know in advance that a trace
* does not contain the events required by an analysis, then the analysis will
* not be run. So the response should not involve having to actually read the
* trace.
*
* @author Geneviève Bastien
* @author Matthew Khouzam
*/
public interface ITmfTraceWithPreDefinedEvents {
/**
* Return a set of event types declared in the trace, without actually
* reading the trace. This method can be called before reading a trace but
* after it is initialized, in order to compare this set with a set of
* events that a request handles, to determine whether or not it is worth
* reading the trace.
*
* Some trace types have ways to determine the events that were traced
* without having to read the whole trace and this is what this method will
* query. The presence of an event in the returned set does not guarantee
* that an event with this name actually happened during this trace, only
* that it can be there.
*
* The set should be immutable. Destructive set operations should be
* performed on a copy of this set.A helper class
* {@link TmfEventTypeCollectionHelper} will provide ways of working with
* this data structure.
*
* @return The set of events that might be present in the trace
*/
@NonNull Set<@NonNull ? extends ITmfEventType> getContainedEventTypes();
}