/*******************************************************************************
* Copyright (c) 2016 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
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.internal.service;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
import org.eclipse.cdt.dsf.datamodel.IDMContext;
import org.eclipse.cdt.dsf.datamodel.IDMEvent;
import org.eclipse.cdt.dsf.service.IDsfService;
/**
* This service keeps synchronized the CDT debug view selection and GDB's
* internal focus - GDB's current thread, stack frame, and (implicitly) inferior.
*
* @since 5.2
*/
public interface IGDBFocusSynchronizer extends IDsfService {
/**
* Returns an array of contexts, representing the current synchronized focus
*/
IDMContext[] getFocus();
/**
* Sets the service's current focus and propagate it to the GDB corresponding to this
* service's instance, when appropriate.
*
* @param focus An array of IDMContext, each context representing a focus'ed element
* from the Debug View
* @param rm the request monitor
*/
void setFocus(IDMContext[] focus, RequestMonitor rm);
/**
* The service sends this event to indicate that GDB has changed its focus, as a
* result of an event not triggered by CDT. For example a console command typed by
* the user.
* Note: the full focus might not be reflected in the included context. The service
* can be queried to get the complete picture.
*/
interface IGDBFocusChangedEvent extends IDMEvent<IDMContext> {}
/**
* This tells the synchronizer that the session, corresponding to this service's
* instance, has been selected. This can be called, for example, when a specific
* debugger console has become active, so that the synchronizer will reflect this
* in the Debug View selection.
*/
void sessionSelected();
}