1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

[205142] Standardized use of typed DM Context parameters in DSF Debug interfaces.

This commit is contained in:
Pawel Piech 2007-11-20 03:49:14 +00:00
parent d0e0286a8d
commit 9df59c726e
13 changed files with 82 additions and 261 deletions

View file

@ -18,8 +18,8 @@ import org.eclipse.dd.dsf.debug.service.IRegisters;
import org.eclipse.dd.dsf.debug.service.IRunControl; import org.eclipse.dd.dsf.debug.service.IRunControl;
import org.eclipse.dd.dsf.debug.service.IModules.IModuleDMContext; import org.eclipse.dd.dsf.debug.service.IModules.IModuleDMContext;
import org.eclipse.dd.dsf.debug.service.IModules.IModuleDMData; import org.eclipse.dd.dsf.debug.service.IModules.IModuleDMData;
import org.eclipse.dd.dsf.debug.service.IModules.ISymbolDMContext;
import org.eclipse.dd.dsf.debug.service.IRegisters.IGroupChangedDMEvent; import org.eclipse.dd.dsf.debug.service.IRegisters.IGroupChangedDMEvent;
import org.eclipse.dd.dsf.debug.service.IRunControl.IExecutionDMContext;
import org.eclipse.dd.dsf.service.DsfSession; import org.eclipse.dd.dsf.service.DsfSession;
import org.eclipse.dd.dsf.service.IDsfService; import org.eclipse.dd.dsf.service.IDsfService;
import org.eclipse.dd.dsf.ui.viewmodel.AbstractVMProvider; import org.eclipse.dd.dsf.ui.viewmodel.AbstractVMProvider;
@ -41,11 +41,11 @@ public class ModulesLayoutNode extends AbstractDMVMLayoutNode
protected void updateElementsInSessionThread(final IChildrenUpdate update) { protected void updateElementsInSessionThread(final IChildrenUpdate update) {
if (!checkService(IRegisters.class, null, update)) return; if (!checkService(IRegisters.class, null, update)) return;
final IExecutionDMContext execDmc = findDmcInPath(update.getElementPath(), IExecutionDMContext.class) ; final ISymbolDMContext symDmc = findDmcInPath(update.getElementPath(), ISymbolDMContext.class) ;
if (execDmc != null) { if (symDmc != null) {
getServicesTracker().getService(IModules.class).getModules( getServicesTracker().getService(IModules.class).getModules(
execDmc, symDmc,
new DataRequestMonitor<IModuleDMContext[]>(getSession().getExecutor(), null) { new DataRequestMonitor<IModuleDMContext[]>(getSession().getExecutor(), null) {
@Override @Override
public void handleCompleted() { public void handleCompleted() {

View file

@ -27,12 +27,10 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.dd.dsf.concurrent.DataRequestMonitor; import org.eclipse.dd.dsf.concurrent.DataRequestMonitor;
import org.eclipse.dd.dsf.concurrent.Query; import org.eclipse.dd.dsf.concurrent.Query;
import org.eclipse.dd.dsf.concurrent.RequestMonitor; import org.eclipse.dd.dsf.concurrent.RequestMonitor;
import org.eclipse.dd.dsf.datamodel.DMContexts;
import org.eclipse.dd.dsf.debug.DsfDebugPlugin; import org.eclipse.dd.dsf.debug.DsfDebugPlugin;
import org.eclipse.dd.dsf.debug.service.IMemory; import org.eclipse.dd.dsf.debug.service.IMemory;
import org.eclipse.dd.dsf.debug.service.IRunControl; import org.eclipse.dd.dsf.debug.service.IRunControl;
import org.eclipse.dd.dsf.debug.service.IMemory.MemoryChangedEvent; import org.eclipse.dd.dsf.debug.service.IMemory.IMemoryChangedEvent;
import org.eclipse.dd.dsf.debug.service.IRunControl.IContainerDMContext;
import org.eclipse.dd.dsf.service.DsfServiceEventHandler; import org.eclipse.dd.dsf.service.DsfServiceEventHandler;
import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.DebugException;
@ -509,28 +507,14 @@ public class DsfMemoryBlock extends PlatformObject implements IMemoryBlockExtens
} }
@DsfServiceEventHandler @DsfServiceEventHandler
public void eventDispatched(MemoryChangedEvent e) { public void eventDispatched(IMemoryChangedEvent e) {
// Find the container of the event // Check if we are in the same address space
IContainerDMContext eventContext = DMContexts.getAncestorOfType(e.getContext(), IContainerDMContext.class); if (e.getDMContext().equals(fRetrieval.getContext())) {
if (eventContext == null) { IAddress[] addresses = e.getAddresses();
return; for (int i = 0; i < addresses.length; i++)
} handleMemoryChange(addresses[i].getValue());
}
// Find the container of the block
IContainerDMContext blockContext = DMContexts.getAncestorOfType(fRetrieval.getContext(), IContainerDMContext.class);
if (blockContext == null) {
return;
}
// Check if we are in the same address space
if (eventContext != blockContext) {
return;
}
IAddress[] addresses = e.getAddresses();
for (int i = 0; i < addresses.length; i++)
handleMemoryChange(addresses[i].getValue());
} }
/** /**

View file

@ -144,7 +144,7 @@ public class DsfMemoryBlockRetrieval extends PlatformObject implements IMemoryBl
return fExecutor; return fExecutor;
} }
public IDMContext getContext() { public IMemoryDMContext getContext() {
return fContext; return fContext;
} }

View file

@ -36,13 +36,13 @@ public interface IBreakpoints extends IDsfService {
* @param dmc Context to start tracking breakpoints for. * @param dmc Context to start tracking breakpoints for.
* @param rm Completion callback. * @param rm Completion callback.
*/ */
public void installBreakpoints(IDMContext dmc, RequestMonitor rm); public void installBreakpoints(IBreakpointsDMContext dmc, RequestMonitor rm);
/** /**
* Uninstall and stop tracking breakpoints for the given context. * Uninstall and stop tracking breakpoints for the given context.
* @param dmc Context to start tracking breakpoints for. * @param dmc Context to start tracking breakpoints for.
* @param rm Completion callback. * @param rm Completion callback.
*/ */
public void uninstallBreakpoints(IDMContext dmc, RequestMonitor rm); public void uninstallBreakpoints(IBreakpointsDMContext dmc, RequestMonitor rm);
} }

View file

@ -16,6 +16,7 @@ import org.eclipse.cdt.core.IAddress;
import org.eclipse.dd.dsf.concurrent.DataRequestMonitor; import org.eclipse.dd.dsf.concurrent.DataRequestMonitor;
import org.eclipse.dd.dsf.concurrent.RequestMonitor; import org.eclipse.dd.dsf.concurrent.RequestMonitor;
import org.eclipse.dd.dsf.datamodel.IDMContext; import org.eclipse.dd.dsf.datamodel.IDMContext;
import org.eclipse.dd.dsf.datamodel.IDMEvent;
import org.eclipse.dd.dsf.service.IDsfService; import org.eclipse.dd.dsf.service.IDsfService;
import org.eclipse.debug.core.model.MemoryByte; import org.eclipse.debug.core.model.MemoryByte;
@ -28,44 +29,30 @@ public interface IMemory extends IDsfService {
public interface IMemoryDMContext extends IDMContext {} public interface IMemoryDMContext extends IDMContext {}
/** /**
* Event generated every time a range of bytes is modified. * Event generated every time a range of bytes is modified.
* *
* A client wishing to receive such events has to register as a service * A client wishing to receive such events has to register as a service
* event listener and implement the corresponding eventDispatched method. * event listener and implement the corresponding eventDispatched method.
* *
* E.g.: * E.g.:
* *
* MyMemoryBlock(MIRunControl fRunControl) * MyMemoryBlock(MIRunControl fRunControl)
* { * {
* ... * ...
* fRunControl.getSession().addServiceEventListener(MyMemoryBlock.this, null); * fRunControl.getSession().addServiceEventListener(MyMemoryBlock.this, null);
* ... * ...
* } * }
* *
* @DsfServiceEventHandler * @DsfServiceEventHandler
* public void eventDispatched(MemoryChangedEvent e) { * public void eventDispatched(MemoryChangedEvent e) {
* IDMContext<?> context = e.getContext(); * IDMContext<?> context = e.getContext();
* IAddress[] addresses = e.getAddresses(); * IAddress[] addresses = e.getAddresses();
* // do whatever... * // do whatever...
* } * }
*/ */
public class MemoryChangedEvent { public interface IMemoryChangedEvent extends IDMEvent<IMemoryDMContext> {
IAddress[] fAddresses; IAddress[] getAddresses();
IDMContext fContext;
public MemoryChangedEvent(IDMContext context, IAddress[] addresses) {
fContext = context;
fAddresses = addresses;
}
public IDMContext getContext() {
return fContext;
}
public IAddress[] getAddresses() {
return fAddresses;
}
} }
/** /**
@ -88,7 +75,7 @@ public interface IMemory extends IDsfService {
* @param count the number of data elements to read * @param count the number of data elements to read
* @param drm the asynchronous data request monitor * @param drm the asynchronous data request monitor
*/ */
public void getMemory(IDMContext context, IAddress address, long offset, public void getMemory(IMemoryDMContext context, IAddress address, long offset,
int word_size, int count, DataRequestMonitor<MemoryByte[]> drm); int word_size, int count, DataRequestMonitor<MemoryByte[]> drm);
/** /**
@ -109,7 +96,7 @@ public interface IMemory extends IDsfService {
* @param buffer the source buffer * @param buffer the source buffer
* @param rm the asynchronous data request monitor * @param rm the asynchronous data request monitor
*/ */
public void setMemory(IDMContext context, IAddress address, long offset, public void setMemory(IMemoryDMContext context, IAddress address, long offset,
int word_size, int count, byte[] buffer, RequestMonitor rm); int word_size, int count, byte[] buffer, RequestMonitor rm);
/** /**
@ -125,7 +112,7 @@ public interface IMemory extends IDsfService {
* @param pattern the source buffer * @param pattern the source buffer
* @param rm the asynchronous data request monitor * @param rm the asynchronous data request monitor
*/ */
public void fillMemory(IDMContext context, IAddress address, long offset, public void fillMemory(IMemoryDMContext context, IAddress address, long offset,
int word_size, int count, byte[] pattern, RequestMonitor rm); int word_size, int count, byte[] pattern, RequestMonitor rm);
} }

View file

@ -90,16 +90,16 @@ public interface IModules extends IDsfService {
/** /**
* Retreives the list of modules loaded in given symbol context. * Retreives the list of modules loaded in given symbol context.
*/ */
void getModules(IDMContext symCtx, DataRequestMonitor<IModuleDMContext[]> rm); void getModules(ISymbolDMContext symCtx, DataRequestMonitor<IModuleDMContext[]> rm);
/** /**
* Calculates the line numbers corresponding to the given address. * Calculates the line numbers corresponding to the given address.
*/ */
void calcLineInfo(IDMContext symCtx, IAddress address, DataRequestMonitor<LineInfo[]> rm); void calcLineInfo(ISymbolDMContext symCtx, IAddress address, DataRequestMonitor<LineInfo[]> rm);
/** /**
* Calculates the addresses corresponding to the given source file location. * Calculates the addresses corresponding to the given source file location.
*/ */
void calcAddressInfo(IDMContext symCtx, String file, int line, int col, DataRequestMonitor<AddressRange[]> rm); void calcAddressInfo(ISymbolDMContext symCtx, String file, int line, int col, DataRequestMonitor<AddressRange[]> rm);
} }

View file

@ -1,98 +0,0 @@
/*******************************************************************************
* Copyright (c) 2006 Wind River Systems 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:
* Wind River Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.dd.dsf.debug.service;
import org.eclipse.dd.dsf.concurrent.DataRequestMonitor;
import org.eclipse.dd.dsf.concurrent.RequestMonitor;
import org.eclipse.dd.dsf.datamodel.IDMContext;
import org.eclipse.dd.dsf.datamodel.IDMData;
import org.eclipse.dd.dsf.datamodel.IDMService;
/**
* Provides generic access to operating system objects and methods to
* manipulate those objects. This is a much more extensive interface than
* the NativeProcesses service but for simple debugging, it serves the same
* purpose: to list/create/terminate processes and attach debugger to them.
*
* @see INativeProcesses
*/
public interface IOS extends IDMService {
/**
* Context object for the whole OS, for debuggers that support
* debugging multiple targets/cores simultaneously.
*/
public interface IOSDMContext extends IDMContext {}
/**
* Data object describing OS info
*/
public interface IOSDMData extends IDMData {
String getName();
String getDescription();
String getVersion();
}
/**
* Context for a OS object type, such as process, kernel task, semaphore, etc.
*/
public interface IObjectTypeDMContext extends IDMContext {}
/**
* Description data for a OS object type.
*/
public interface IObjectTypeDMData extends IDMData {
String getName();
String getDescription();
String getSingularName();
String getPluralName();
}
/**
* OS object context.
*/
public interface IObjectDMContext extends IDMContext {}
/**
* Description data for an OS object.
*/
public interface IObjectDMData extends IDMData {
String getName();
String getID();
boolean canAttachDebugger();
boolean isDebuggerAttached();
IDMContext getDebuggingContext();
}
/**
* Retrieves list of OS object types.
* @param os OS context.
* @param parent Optional parent type.
* @param rm Request completion monitor.
*/
public void getObjectTypes(IOSDMContext os, IObjectTypeDMContext parent, DataRequestMonitor<IObjectTypeDMContext[]> rm);
/**
* Retrieves list of OS objects for given type.
* @param os OS context.
* @param type The object type.
* @param parent Optional parent of the requested objects.
* @param rm Request completion monitor.
*/
public void getObjects(IOSDMContext os, IObjectTypeDMContext type, IObjectDMContext parent, DataRequestMonitor<IObjectDMContext[]> rm);
/**
* Attaches the debugger to given OS object context.
* @param objectDmc Data Model Context of the OS object to attach to.
* @param rm Request completion monitor.
*/
public void attachDebuggerToObject(IObjectDMContext objectDmc, RequestMonitor requestMonitor);
}

View file

@ -21,8 +21,14 @@ import org.eclipse.dd.dsf.datamodel.IDMEvent;
*/ */
public interface IRegisters extends IFormattedValues { public interface IRegisters extends IFormattedValues {
/** Event indicating groups have changed. */ /**
public interface IGroupsChangedDMEvent extends IDMEvent<IRunControl.IExecutionDMContext> {} * Event indicating groups have changed. The type of context returned by this
* event is generic, because different implementations of the the register service
* could configure register groups using different contexts. Some implementations
* could configure different register groups for each execution context, other
* services may have a global list of groups.
*/
public interface IGroupsChangedDMEvent extends IDMEvent<IDMContext> {}
/** Register group context */ /** Register group context */
public interface IRegisterGroupDMContext extends IFormattedDataDMContext { public interface IRegisterGroupDMContext extends IFormattedDataDMContext {
@ -133,14 +139,9 @@ public interface IRegisters extends IFormattedValues {
void getRegisterGroups(IDMContext ctx, DataRequestMonitor<IRegisterGroupDMContext[]> rm); void getRegisterGroups(IDMContext ctx, DataRequestMonitor<IRegisterGroupDMContext[]> rm);
/** /**
* Retrieves list of sub-groups of given register group. * Retrieves the list of registers for the given context. The given context could include
* @param ctx Context for the returned data. * a register group and an execution context or just an execution context, in which case all
* @param rm Request completion monitor. * registers for all groups should be returned.
*/
void getRegisterSubGroups(IDMContext ctx, DataRequestMonitor<IRegisterGroupDMContext[]> rm);
/**
* Retrieves registers in given register group.
* @param ctx Context for the returned data. * @param ctx Context for the returned data.
* @param rm Request completion monitor. * @param rm Request completion monitor.
*/ */
@ -151,7 +152,7 @@ public interface IRegisters extends IFormattedValues {
* @param ctx Context for the returned data. * @param ctx Context for the returned data.
* @param rm Request completion monitor. * @param rm Request completion monitor.
*/ */
void getBitFields(IDMContext ctx, DataRequestMonitor<IBitFieldDMContext[]> rm); void getBitFields(IRegisterDMContext ctx, DataRequestMonitor<IBitFieldDMContext[]> rm);
/** /**
* Writes a register value for a given register to the target * Writes a register value for a given register to the target
@ -160,7 +161,7 @@ public interface IRegisters extends IFormattedValues {
* @param formatId Format of the value to be written. * @param formatId Format of the value to be written.
* @param rm Request completion monitor. * @param rm Request completion monitor.
*/ */
void writeRegister(IDMContext regCtx, String regValue, String formatId, RequestMonitor rm); void writeRegister(IRegisterDMContext regCtx, String regValue, String formatId, RequestMonitor rm);
/** /**
* Writes a bit field value for a given bit field to the target * Writes a bit field value for a given bit field to the target
@ -169,7 +170,7 @@ public interface IRegisters extends IFormattedValues {
* @param formatId Format of the value to be written. * @param formatId Format of the value to be written.
* @param rm Request completion monitor. * @param rm Request completion monitor.
*/ */
void writeBitField(IDMContext bitFieldCtx, String bitFieldValue, String formatId, RequestMonitor rm); void writeBitField(IBitFieldDMContext bitFieldCtx, String bitFieldValue, String formatId, RequestMonitor rm);
/** /**
* Writes a bit field value for a given bit field to the target * Writes a bit field value for a given bit field to the target
@ -177,5 +178,5 @@ public interface IRegisters extends IFormattedValues {
* @param mnemonic Mnemonic which represents the value to be written. * @param mnemonic Mnemonic which represents the value to be written.
* @param rm Request completion monitor. * @param rm Request completion monitor.
*/ */
void writeBitField(IDMContext bitFieldCtx, IMnemonic mnemonic, RequestMonitor rm); void writeBitField(IBitFieldDMContext bitFieldCtx, IMnemonic mnemonic, RequestMonitor rm);
} }

View file

@ -11,8 +11,8 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.dd.dsf.debug.service; package org.eclipse.dd.dsf.debug.service;
import org.eclipse.dd.dsf.concurrent.RequestMonitor;
import org.eclipse.dd.dsf.concurrent.DataRequestMonitor; import org.eclipse.dd.dsf.concurrent.DataRequestMonitor;
import org.eclipse.dd.dsf.concurrent.RequestMonitor;
import org.eclipse.dd.dsf.datamodel.IDMContext; import org.eclipse.dd.dsf.datamodel.IDMContext;
import org.eclipse.dd.dsf.datamodel.IDMData; import org.eclipse.dd.dsf.datamodel.IDMData;
import org.eclipse.dd.dsf.datamodel.IDMEvent; import org.eclipse.dd.dsf.datamodel.IDMEvent;
@ -121,15 +121,15 @@ public interface IRunControl extends IDMService
* Run control commands. They all require the IExecutionContext object on * Run control commands. They all require the IExecutionContext object on
* which they perform the operations. * which they perform the operations.
*/ */
boolean canResume(IDMContext context); boolean canResume(IExecutionDMContext context);
boolean canSuspend(IDMContext context); boolean canSuspend(IExecutionDMContext context);
boolean isSuspended(IDMContext context); boolean isSuspended(IExecutionDMContext context);
void resume(IDMContext context, RequestMonitor requestMonitor); void resume(IExecutionDMContext context, RequestMonitor requestMonitor);
void suspend(IDMContext context, RequestMonitor requestMonitor); void suspend(IExecutionDMContext context, RequestMonitor requestMonitor);
public enum StepType { STEP_OVER, STEP_INTO, STEP_RETURN }; public enum StepType { STEP_OVER, STEP_INTO, STEP_RETURN };
boolean isStepping(IDMContext context); boolean isStepping(IExecutionDMContext context);
boolean canStep(IDMContext context); boolean canStep(IExecutionDMContext context);
void step(IDMContext context, StepType stepType, RequestMonitor requestMonitor); void step(IExecutionDMContext context, StepType stepType, RequestMonitor requestMonitor);
boolean canInstructionStep(IDMContext context); boolean canInstructionStep(IExecutionDMContext context);
void instructionStep(IDMContext context, StepType stepType, RequestMonitor requestMonitor); void instructionStep(IExecutionDMContext context, StepType stepType, RequestMonitor requestMonitor);
} }

View file

@ -30,10 +30,10 @@ public interface ISourceLookup extends IDsfService {
/** /**
* Retrieves the host source object for given debugger path string. * Retrieves the host source object for given debugger path string.
*/ */
void getSource(IDMContext ctx, String debuggerPath, DataRequestMonitor<Object> rm); void getSource(ISourceLookupDMContext ctx, String debuggerPath, DataRequestMonitor<Object> rm);
/** /**
* Retrieves the debugger path string for given host source object. * Retrieves the debugger path string for given host source object.
*/ */
void getDebuggerPath(IDMContext ctx, Object source, DataRequestMonitor<String> rm); void getDebuggerPath(ISourceLookupDMContext ctx, Object source, DataRequestMonitor<String> rm);
} }

View file

@ -104,7 +104,7 @@ public interface IStack extends IDMService {
void getLocals(IDMContext frameCtx, DataRequestMonitor<IVariableDMContext[]> rm); void getLocals(IDMContext frameCtx, DataRequestMonitor<IVariableDMContext[]> rm);
/** /**
* Retrieves the stack depth of the specified stack frame. * Retrieves the number of stack frames available for the given context..
* @param dmc Context to retrieve data for. * @param dmc Context to retrieve data for.
* @param The maximum depth of stack to calculate. Should be 0 to calculate * @param The maximum depth of stack to calculate. Should be 0 to calculate
* depth with no limit. * depth with no limit.

View file

@ -10,7 +10,6 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.dd.dsf.debug.service; package org.eclipse.dd.dsf.debug.service;
import org.eclipse.dd.dsf.datamodel.IDMContext;
import org.eclipse.dd.dsf.datamodel.IDMEvent; import org.eclipse.dd.dsf.datamodel.IDMEvent;
import org.eclipse.dd.dsf.debug.service.IRunControl.IExecutionDMContext; import org.eclipse.dd.dsf.debug.service.IRunControl.IExecutionDMContext;
import org.eclipse.dd.dsf.service.IDsfService; import org.eclipse.dd.dsf.service.IDsfService;
@ -46,21 +45,21 @@ public interface IStepQueueManager extends IDsfService {
* Returns the number of step commands that are queued for given execution * Returns the number of step commands that are queued for given execution
* context. * context.
*/ */
int getPendingStepCount(IDMContext ctx); int getPendingStepCount(IExecutionDMContext ctx);
/** /**
* Checks whether a step command can be queued up for given context. * Checks whether a step command can be queued up for given context.
*/ */
boolean canEnqueueStep(IDMContext execCtx); boolean canEnqueueStep(IExecutionDMContext execCtx);
boolean canEnqueueInstructionStep(IDMContext ctx); boolean canEnqueueInstructionStep(IExecutionDMContext ctx);
/** /**
* Adds a step command to the execution queue for given context. * Adds a step command to the execution queue for given context.
* @param execCtx Execution context that should perform the step. * @param execCtx Execution context that should perform the step.
* @param stepType Type of step to execute. * @param stepType Type of step to execute.
*/ */
void enqueueStep(IDMContext ctx, IRunControl.StepType stepType); void enqueueStep(IExecutionDMContext ctx, IRunControl.StepType stepType);
/** /**
* Adds an instruction step command to the execution queue for given * Adds an instruction step command to the execution queue for given
@ -68,7 +67,7 @@ public interface IStepQueueManager extends IDsfService {
* @param execCtx Execution context that should perform the step. * @param execCtx Execution context that should perform the step.
* @param stepType Type of step to execute. * @param stepType Type of step to execute.
*/ */
void enqueueInstructionStep(IDMContext ctx, IRunControl.StepType stepType); void enqueueInstructionStep(IExecutionDMContext ctx, IRunControl.StepType stepType);
boolean isSteppingTimedOut(IDMContext context); boolean isSteppingTimedOut(IExecutionDMContext context);
} }

View file

@ -1,52 +0,0 @@
/*******************************************************************************
* Copyright (c) 2006 Wind River Systems 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:
* Wind River Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.dd.dsf.debug.service;
import org.eclipse.dd.dsf.concurrent.RequestMonitor;
import org.eclipse.dd.dsf.concurrent.DataRequestMonitor;
import org.eclipse.dd.dsf.datamodel.IDMContext;
import org.eclipse.dd.dsf.datamodel.IDMData;
import org.eclipse.dd.dsf.datamodel.IDMEvent;
import org.eclipse.dd.dsf.datamodel.IDMService;
/**
* This is just an initial take at the targets interface.
*/
public interface ITargets extends IDMService {
public interface ITargetDMContext extends IDMContext {}
public interface ITargetDMData extends IDMData {
String getName();
boolean isConnected();
}
public interface ITargetStateChanged extends IDMEvent<ITargetDMContext> {}
public interface ICoreDMContext extends IDMContext {}
public interface ICoreDMData extends IDMData {
String getName();
boolean isConnected();
IOS.IOSDMContext getOSDMContext();
}
public interface ICoreStateChangedDMEvent extends IDMEvent<ICoreDMContext> {}
public void getTargets(DataRequestMonitor<ITargetDMContext> requestMonitor);
public void getCores(ITargetDMContext target, DataRequestMonitor<ICoreDMContext> requestMonitor);
public void connectTarget(ITargetDMContext targetDmc, RequestMonitor requestMonitor);
public void disconnectTarget(ITargetDMContext targetDmc, RequestMonitor requestMonitor);
public void connectCore(ITargetDMContext targetDmc, RequestMonitor requestMonitor);
public void disconnectCore(ITargetDMContext targetDmc, RequestMonitor requestMonitor);
}