blob: 5bcfde5027b023f9e8c05c5610a56bbe48b4ca26 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2015 École Polytechnique de Montréal
*
* 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
*******************************************************************************/
package org.eclipse.tracecompass.tmf.core.statesystem;
import java.util.Collections;
import java.util.Map;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
/**
* Interface for analysis modules providing state systems.
*
* @author Geneviève Bastien
*/
public interface ITmfAnalysisModuleWithStateSystems extends IAnalysisModule {
/**
* Return the versions of this module's state providers.
*
* @return The providers' versions, key is the state system ID, value is the
* version number.
* @since 4.0
*/
default Map<String, Integer> getProviderVersions() {
return Collections.emptyMap();
}
/**
* Return a specific state system provided by this analysis.
*
* @param id
* The ID of the state system
* @return The state system corresponding to the given ID, null if there is
* no match.
*/
@Nullable ITmfStateSystem getStateSystem(String id);
/**
* Return all the state systems provided by this analysis module, in
* Iterable format.
*
* @return The state systems
*/
Iterable<ITmfStateSystem> getStateSystems();
/**
* Block the calling thread until the analysis module has been initialized.
* If the initialization succeeded, {@link #getStateSystems()} should return
* all state systems of this analysis and calling
* {@link #getStateSystem(String)} should not return a null value. If it
* returns false, it is not safe to assume the state systems will be
* present.
*
* @return True whether the initialization succeeded, false otherwise
*
* @since 2.0
*/
boolean waitForInitialization();
}