/*******************************************************************************
* Copyright (c) 2012 Ericsson and others.
* 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:
* Marc Khouzam (Ericsson) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.dsf.debug.service;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
/**
* This interface provides the ability to perform run control operations on multiple contexts.
*
* @see org.eclipse.cdt.dsf.debug.service.IRunControl
*
* @since 2.3
*/
public interface IMultiRunControl extends IRunControl
{
/**
* Check if at least one of the specified contexts can be resumed
* @param context List of execution contexts that want to be resumed
* @param rm Request monitor returning:
* true if at least one of the specified contexts can be resumed
* false if none of the specified contexts can be resumed
*/
void canResumeSome(IExecutionDMContext[] contexts, DataRequestMonitor<Boolean> rm);
/**
* Check if all of the specified contexts can be resumed
* @param context List of execution contexts that want to be resumed
* @param rm Request monitor returning:
* true if all of the specified contexts can be resumed
* false if any of the specified contexts cannot be resumed
*/
void canResumeAll(IExecutionDMContext[] contexts, DataRequestMonitor<Boolean> rm);
/**
* Check if at least one of the specified contexts can be suspended
* @param context List of execution contexts that want to be suspended
* @param rm Request monitor returning:
* true if at least one of the specified contexts can be suspended
* false if none of the specified contexts can be suspended
*/
void canSuspendSome(IExecutionDMContext[] contexts, DataRequestMonitor<Boolean> rm);
/**
* Check if all of the specified contexts can be suspended
* @param context List of execution contexts that want to be suspended
* @param rm Request monitor returning:
* true if all of the specified contexts can be suspended
* false if any of the specified contexts cannot be suspended
*/
void canSuspendAll(IExecutionDMContext[] contexts, DataRequestMonitor<Boolean> rm);
/**
* Check if any of the specified contexts is suspended.
* @param context List of execution contexts that are to be checked for being suspended
* @param rm Request monitor returning:
* true if any of the specified contexts is suspended, false otherwise
*/
void isSuspendedSome(IExecutionDMContext[] contexts, DataRequestMonitor<Boolean> rm);
/**
* Check if all of the specified contexts are suspended.
* @param context List of execution contexts that are to be checked for being suspended
* @param rm Request monitor returning:
* true if all of the specified contexts are suspended, false otherwise
*/
void isSuspendedAll(IExecutionDMContext[] contexts, DataRequestMonitor<Boolean> rm);
/**
* Check if any of the specified contexts can be stepped using stepType
* @param context List of execution contexts that want to be stepped
* @param stepStype The type of step to be used.
* @param rm Request monitor returning:
* true if any of the specified contexts can be stepped
* false if none of the specified contexts can be stepped
*/
void canStepSome(IExecutionDMContext[] contexts, StepType stepType, DataRequestMonitor<Boolean> rm);
/**
* Check if all of the specified contexts can be stepped using stepType
* @param context List of execution contexts that want to be stepped
* @param stepStype The type of step to be used.
* @param rm Request monitor returning:
* true if all of the specified contexts can be stepped
* false if any of the specified contexts cannot be stepped
*/
void canStepAll(IExecutionDMContext[] contexts, StepType stepType, DataRequestMonitor<Boolean> rm);
/**
* Check if any of the specified contexts is currently stepping.
* @param context List of execution contexts that are to be checked for stepping
* @param rm Request monitor returning:
* true if any of the specified contexts is stepping, false otherwise
*/
void isSteppingSome(IExecutionDMContext[] contexts, DataRequestMonitor<Boolean> rm);
/**
* Check if all of the specified contexts are currently stepping.
* @param context List of execution contexts that are to be checked for stepping
* @param rm Request monitor returning:
* true if all of the specified contexts are stepping, false otherwise
*/
void isSteppingAll(IExecutionDMContext[] contexts, DataRequestMonitor<Boolean> rm);
/**
* Request that all specified contexts be resumed. Only contexts that are in a
* state that can be resumed will be affected, others will be ignored.
* @param context List of execution contexts that are to be resumed
*/
void resume(IExecutionDMContext[] contexts, RequestMonitor rm);
/**
* Request that all specified contexts be suspended. Only contexts that are in a
* state that can be suspended will be affected, others will be ignored.
* @param context List of execution contexts that are to be suspended
*/
void suspend(IExecutionDMContext[] contexts, RequestMonitor rm);
/**
* Request that all specified context be stepped using stepType. Only contexts
* that are in a state that can be stepped will be affected, others will be ignored.
* @param context List of execution contexts that are to be stepped
* @param stepStype The type of step to be used.
*/
void step(IExecutionDMContext[] contexts, StepType stepType, RequestMonitor rm);
}