package org.erlide.backend.api; import java.util.Collection; import java.util.Set; import org.eclipse.core.resources.IProject; import org.eclipse.debug.core.ILaunch; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; import org.erlide.engine.model.root.IErlProject; import org.erlide.runtime.epmd.IEpmdListener; import org.erlide.runtime.rpc.IOtpRpc; import org.erlide.runtime.runtimeinfo.RuntimeVersion; public interface IBackendManager extends IEpmdListener { IBackend getIdeBackend(); IBackend getBuildBackend(@NonNull final IErlProject project); void removeBackend(IBackend backend); Set<IBackend> getExecutionBackends(@NonNull final IProject project); Collection<IBackend> getAllBackends(); void addBackendListener(final IBackendListener listener); void removeBackendListener(final IBackendListener listener); void forEachBackend(final Procedure1<IBackend> visitor); IBackend createExecutionBackend(final BackendData data); void addExecutionBackend(final IProject project, final IBackend b); void removeExecutionBackend(final IProject project, final IProjectCodeLoader b); IPluginCodeLoader getBackendForLaunch(final ILaunch launch); void terminateBackendsForLaunch(final ILaunch launch); void removeBackendsForLaunch(final ILaunch launch); void dispose(); Collection<ICodeBundle> getCodeBundles(); IOtpRpc getByName(final String nodeName); IOtpRpc getByVersion(RuntimeVersion version); IOtpRpc getByProject(String projectName); void loadCodepathExtensions(); void moduleLoaded(final IBackend backend, final IProject project, final String moduleName); IBackendFactory getFactory(); }