Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 243216 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/dd/gdb/internal/provisional/service/command/GDBControl.java (-21 / +3 lines)
Lines 38-44 Link Here
38
import org.eclipse.dd.dsf.concurrent.IDsfStatusConstants;
38
import org.eclipse.dd.dsf.concurrent.IDsfStatusConstants;
39
import org.eclipse.dd.dsf.concurrent.RequestMonitor;
39
import org.eclipse.dd.dsf.concurrent.RequestMonitor;
40
import org.eclipse.dd.dsf.concurrent.Sequence;
40
import org.eclipse.dd.dsf.concurrent.Sequence;
41
import org.eclipse.dd.dsf.datamodel.AbstractDMEvent;
42
import org.eclipse.dd.dsf.debug.service.command.ICommandControl;
41
import org.eclipse.dd.dsf.debug.service.command.ICommandControl;
43
import org.eclipse.dd.dsf.service.DsfServiceEventHandler;
42
import org.eclipse.dd.dsf.service.DsfServiceEventHandler;
44
import org.eclipse.dd.dsf.service.DsfSession;
43
import org.eclipse.dd.dsf.service.DsfSession;
Lines 73-95 Link Here
73
 */
72
 */
74
public class GDBControl extends AbstractMIControl {
73
public class GDBControl extends AbstractMIControl {
75
74
76
    /**
77
     * Event indicating that the back end process process has started.
78
     */
79
    public static class GDBStartedEvent extends AbstractDMEvent<GDBControlDMContext> {
80
        public GDBStartedEvent(GDBControlDMContext context) {
81
            super(context);
82
        }
83
    }
84
    
85
    /**
86
     * Event indicating that the back end process has terminated.
87
     */
88
    public static class GDBExitedEvent extends AbstractDMEvent<GDBControlDMContext> {
89
        public GDBExitedEvent(GDBControlDMContext context) {
90
            super(context);
91
        }
92
    }
93
75
94
    private static int fgInstanceCounter = 0;
76
    private static int fgInstanceCounter = 0;
95
    private final GDBControlDMContext fControlDmc;
77
    private final GDBControlDMContext fControlDmc;
Lines 436-442 Link Here
436
    }
418
    }
437
        
419
        
438
    @DsfServiceEventHandler 
420
    @DsfServiceEventHandler 
439
    public void eventDispatched(GDBExitedEvent e) {
421
    public void eventDispatched(BackendExitedEvent e) {
440
        // Handle our "GDB Exited" event and stop processing commands.
422
        // Handle our "GDB Exited" event and stop processing commands.
441
        stopCommandProcessing();
423
        stopCommandProcessing();
442
    }
424
    }
Lines 463-469 Link Here
463
                        Thread.interrupted();
445
                        Thread.interrupted();
464
                    } finally {
446
                    } finally {
465
                        fExited = true;
447
                        fExited = true;
466
                        getSession().dispatchEvent(new GDBExitedEvent(fControlDmc) {}, getProperties());
448
                        getSession().dispatchEvent(new BackendExitedEvent(fControlDmc) {}, getProperties());
467
                    }
449
                    }
468
                }
450
                }
469
            }
451
            }
Lines 735-741 Link Here
735
        public void initialize(final RequestMonitor requestMonitor) {
717
        public void initialize(final RequestMonitor requestMonitor) {
736
            getSession().addServiceEventListener(GDBControl.this, null);
718
            getSession().addServiceEventListener(GDBControl.this, null);
737
            register(new String[]{ ICommandControl.class.getName(), AbstractMIControl.class.getName() }, new Hashtable<String,String>());
719
            register(new String[]{ ICommandControl.class.getName(), AbstractMIControl.class.getName() }, new Hashtable<String,String>());
738
            getSession().dispatchEvent(new GDBStartedEvent(getGDBDMContext()), getProperties());
720
            getSession().dispatchEvent(new BackendStartedEvent(getGDBDMContext()), getProperties());
739
            requestMonitor.done();
721
            requestMonitor.done();
740
        }
722
        }
741
723
(-)src/org/eclipse/dd/gdb/internal/provisional/launching/GdbLaunch.java (-1 / +2 lines)
Lines 39-44 Link Here
39
import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl;
39
import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl;
40
import org.eclipse.dd.mi.service.command.AbstractCLIProcess;
40
import org.eclipse.dd.mi.service.command.AbstractCLIProcess;
41
import org.eclipse.dd.mi.service.command.MIInferiorProcess;
41
import org.eclipse.dd.mi.service.command.MIInferiorProcess;
42
import org.eclipse.dd.mi.service.command.AbstractMIControl.BackendExitedEvent;
42
import org.eclipse.debug.core.DebugException;
43
import org.eclipse.debug.core.DebugException;
43
import org.eclipse.debug.core.DebugPlugin;
44
import org.eclipse.debug.core.DebugPlugin;
44
import org.eclipse.debug.core.ILaunchConfiguration;
45
import org.eclipse.debug.core.ILaunchConfiguration;
Lines 184-190 Link Here
184
    
185
    
185
    ///////////////////////////////////////////////////////////////////////////
186
    ///////////////////////////////////////////////////////////////////////////
186
    // IServiceEventListener
187
    // IServiceEventListener
187
    @DsfServiceEventHandler public void eventDispatched(GDBControl.GDBExitedEvent event) {
188
    @DsfServiceEventHandler public void eventDispatched(BackendExitedEvent event) {
188
        shutdownSession(new RequestMonitor(ImmediateExecutor.getInstance(), null));
189
        shutdownSession(new RequestMonitor(ImmediateExecutor.getInstance(), null));
189
    }
190
    }
190
191
(-)src/org/eclipse/dd/mi/service/MIRunControlNS.java (-2 / +2 lines)
Lines 35-40 Link Here
35
import org.eclipse.dd.dsf.service.DsfSession;
35
import org.eclipse.dd.dsf.service.DsfSession;
36
import org.eclipse.dd.mi.internal.MIPlugin;
36
import org.eclipse.dd.mi.internal.MIPlugin;
37
import org.eclipse.dd.mi.service.command.AbstractMIControl;
37
import org.eclipse.dd.mi.service.command.AbstractMIControl;
38
import org.eclipse.dd.mi.service.command.AbstractMIControl.BackendExitedEvent;
38
import org.eclipse.dd.mi.service.command.commands.MIExecContinue;
39
import org.eclipse.dd.mi.service.command.commands.MIExecContinue;
39
import org.eclipse.dd.mi.service.command.commands.MIExecFinish;
40
import org.eclipse.dd.mi.service.command.commands.MIExecFinish;
40
import org.eclipse.dd.mi.service.command.commands.MIExecInterrupt;
41
import org.eclipse.dd.mi.service.command.commands.MIExecInterrupt;
Lines 48-54 Link Here
48
import org.eclipse.dd.mi.service.command.events.MIBreakpointHitEvent;
49
import org.eclipse.dd.mi.service.command.events.MIBreakpointHitEvent;
49
import org.eclipse.dd.mi.service.command.events.MIErrorEvent;
50
import org.eclipse.dd.mi.service.command.events.MIErrorEvent;
50
import org.eclipse.dd.mi.service.command.events.MIEvent;
51
import org.eclipse.dd.mi.service.command.events.MIEvent;
51
import org.eclipse.dd.mi.service.command.events.MIGDBExitEvent;
52
import org.eclipse.dd.mi.service.command.events.MIRunningEvent;
52
import org.eclipse.dd.mi.service.command.events.MIRunningEvent;
53
import org.eclipse.dd.mi.service.command.events.MISharedLibEvent;
53
import org.eclipse.dd.mi.service.command.events.MISharedLibEvent;
54
import org.eclipse.dd.mi.service.command.events.MISignalEvent;
54
import org.eclipse.dd.mi.service.command.events.MISignalEvent;
Lines 850-856 Link Here
850
	}
850
	}
851
851
852
	@DsfServiceEventHandler
852
	@DsfServiceEventHandler
853
	public void eventDispatched(MIGDBExitEvent e) {
853
	public void eventDispatched(BackendExitedEvent e) {
854
		fTerminated = true;
854
		fTerminated = true;
855
	}
855
	}
856
856
(-)src/org/eclipse/dd/mi/service/MIBreakpoints.java (+5 lines)
Lines 31-36 Link Here
31
import org.eclipse.dd.dsf.service.DsfServiceEventHandler;
31
import org.eclipse.dd.dsf.service.DsfServiceEventHandler;
32
import org.eclipse.dd.dsf.service.DsfSession;
32
import org.eclipse.dd.dsf.service.DsfSession;
33
import org.eclipse.dd.mi.internal.MIPlugin;
33
import org.eclipse.dd.mi.internal.MIPlugin;
34
import org.eclipse.dd.mi.service.command.AbstractMIControl.BackendExitedEvent;
34
import org.eclipse.dd.mi.service.command.commands.MIBreakAfter;
35
import org.eclipse.dd.mi.service.command.commands.MIBreakAfter;
35
import org.eclipse.dd.mi.service.command.commands.MIBreakCondition;
36
import org.eclipse.dd.mi.service.command.commands.MIBreakCondition;
36
import org.eclipse.dd.mi.service.command.commands.MIBreakDelete;
37
import org.eclipse.dd.mi.service.command.commands.MIBreakDelete;
Lines 274-279 Link Here
274
    public void eventDispatched(MIGDBExitEvent e) {
275
    public void eventDispatched(MIGDBExitEvent e) {
275
    }
276
    }
276
277
278
    @DsfServiceEventHandler
279
    public void eventDispatched(BackendExitedEvent e) {
280
    }
281
277
	///////////////////////////////////////////////////////////////////////////
282
	///////////////////////////////////////////////////////////////////////////
278
	// IBreakpoints interface
283
	// IBreakpoints interface
279
	///////////////////////////////////////////////////////////////////////////
284
	///////////////////////////////////////////////////////////////////////////
(-)src/org/eclipse/dd/mi/service/MIRunControl.java (+6 lines)
Lines 29-34 Link Here
29
import org.eclipse.dd.dsf.service.DsfSession;
29
import org.eclipse.dd.dsf.service.DsfSession;
30
import org.eclipse.dd.mi.internal.MIPlugin;
30
import org.eclipse.dd.mi.internal.MIPlugin;
31
import org.eclipse.dd.mi.service.command.AbstractMIControl;
31
import org.eclipse.dd.mi.service.command.AbstractMIControl;
32
import org.eclipse.dd.mi.service.command.AbstractMIControl.BackendExitedEvent;
32
import org.eclipse.dd.mi.service.command.commands.MIExecContinue;
33
import org.eclipse.dd.mi.service.command.commands.MIExecContinue;
33
import org.eclipse.dd.mi.service.command.commands.MIExecFinish;
34
import org.eclipse.dd.mi.service.command.commands.MIExecFinish;
34
import org.eclipse.dd.mi.service.command.commands.MIExecInterrupt;
35
import org.eclipse.dd.mi.service.command.commands.MIExecInterrupt;
Lines 407-412 Link Here
407
    @DsfServiceEventHandler
408
    @DsfServiceEventHandler
408
    public void eventDispatched(MIGDBExitEvent e) {
409
    public void eventDispatched(MIGDBExitEvent e) {
409
        fTerminated = true;
410
        fTerminated = true;
411
    }
412
    
413
    @DsfServiceEventHandler
414
    public void eventDispatched(BackendExitedEvent e) {
415
        fTerminated = true;
410
	}
416
	}
411
417
412
418
(-)src/org/eclipse/dd/mi/service/MIBreakpointsManager.java (+6 lines)
Lines 72-77 Link Here
72
import org.eclipse.dd.mi.service.MIBreakpoints.BreakpointUpdatedEvent;
72
import org.eclipse.dd.mi.service.MIBreakpoints.BreakpointUpdatedEvent;
73
import org.eclipse.dd.mi.service.MIBreakpoints.MIBreakpointDMContext;
73
import org.eclipse.dd.mi.service.MIBreakpoints.MIBreakpointDMContext;
74
import org.eclipse.dd.mi.service.breakpoint.actions.BreakpointActionAdapter;
74
import org.eclipse.dd.mi.service.breakpoint.actions.BreakpointActionAdapter;
75
import org.eclipse.dd.mi.service.command.AbstractMIControl.BackendExitedEvent;
75
import org.eclipse.dd.mi.service.command.events.MIBreakpointHitEvent;
76
import org.eclipse.dd.mi.service.command.events.MIBreakpointHitEvent;
76
import org.eclipse.dd.mi.service.command.events.MIGDBExitEvent;
77
import org.eclipse.dd.mi.service.command.events.MIGDBExitEvent;
77
import org.eclipse.dd.mi.service.command.events.MIWatchpointScopeEvent;
78
import org.eclipse.dd.mi.service.command.events.MIWatchpointScopeEvent;
Lines 1232-1237 Link Here
1232
        terminated();
1233
        terminated();
1233
    }
1234
    }
1234
1235
1236
    @DsfServiceEventHandler
1237
    public void eventDispatched(BackendExitedEvent e) {
1238
        terminated();
1239
    }
1240
1235
    private void terminated() {
1241
    private void terminated() {
1236
        clearBreakpointStatus(fPlatformBPs.keySet().toArray(new ICBreakpoint[fPlatformBPs.size()]));
1242
        clearBreakpointStatus(fPlatformBPs.keySet().toArray(new ICBreakpoint[fPlatformBPs.size()]));
1237
        fPlatformBPs.clear();
1243
        fPlatformBPs.clear();
(-)src/org/eclipse/dd/mi/service/command/AbstractMIControl.java (+19 lines)
Lines 30-35 Link Here
30
import org.eclipse.core.runtime.Status;
30
import org.eclipse.core.runtime.Status;
31
import org.eclipse.dd.dsf.concurrent.DataRequestMonitor;
31
import org.eclipse.dd.dsf.concurrent.DataRequestMonitor;
32
import org.eclipse.dd.dsf.concurrent.DsfRunnable;
32
import org.eclipse.dd.dsf.concurrent.DsfRunnable;
33
import org.eclipse.dd.dsf.datamodel.AbstractDMEvent;
33
import org.eclipse.dd.dsf.datamodel.DMContexts;
34
import org.eclipse.dd.dsf.datamodel.DMContexts;
34
import org.eclipse.dd.dsf.datamodel.IDMContext;
35
import org.eclipse.dd.dsf.datamodel.IDMContext;
35
import org.eclipse.dd.dsf.debug.service.IRunControl;
36
import org.eclipse.dd.dsf.debug.service.IRunControl;
Lines 68-73 Link Here
68
{
69
{
69
    final static String PROP_INSTANCE_ID = MIPlugin.PLUGIN_ID + ".miControlInstanceId";    //$NON-NLS-1$
70
    final static String PROP_INSTANCE_ID = MIPlugin.PLUGIN_ID + ".miControlInstanceId";    //$NON-NLS-1$
70
 
71
 
72
    /**
73
     * Event indicating that the back end process has started.
74
     */
75
    public static class BackendStartedEvent extends AbstractDMEvent<MIControlDMContext> {
76
        public BackendStartedEvent(MIControlDMContext context) {
77
            super(context);
78
        }
79
    }
80
    
81
    /**
82
     * Event indicating that the back end process has terminated.
83
     */
84
    public static class BackendExitedEvent extends AbstractDMEvent<MIControlDMContext> {
85
        public BackendExitedEvent(MIControlDMContext context) {
86
            super(context);
87
        }
88
    }
89
71
    /*
90
    /*
72
	 *  Thread control variables for the transmit and receive threads.
91
	 *  Thread control variables for the transmit and receive threads.
73
	 */
92
	 */
(-)src/org/eclipse/dd/gdb/internal/ui/viewmodel/launch/LaunchVMProvider.java (-4 / +4 lines)
Lines 20-27 Link Here
20
import org.eclipse.dd.dsf.ui.viewmodel.AbstractVMAdapter;
20
import org.eclipse.dd.dsf.ui.viewmodel.AbstractVMAdapter;
21
import org.eclipse.dd.dsf.ui.viewmodel.IRootVMNode;
21
import org.eclipse.dd.dsf.ui.viewmodel.IRootVMNode;
22
import org.eclipse.dd.dsf.ui.viewmodel.IVMNode;
22
import org.eclipse.dd.dsf.ui.viewmodel.IVMNode;
23
import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl.GDBExitedEvent;
23
import org.eclipse.dd.mi.service.command.AbstractMIControl.BackendExitedEvent;
24
import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl.GDBStartedEvent;
24
import org.eclipse.dd.mi.service.command.AbstractMIControl.BackendStartedEvent;
25
import org.eclipse.dd.mi.service.command.MIInferiorProcess.InferiorExitedDMEvent;
25
import org.eclipse.dd.mi.service.command.MIInferiorProcess.InferiorExitedDMEvent;
26
import org.eclipse.dd.mi.service.command.MIInferiorProcess.InferiorStartedDMEvent;
26
import org.eclipse.dd.mi.service.command.MIInferiorProcess.InferiorStartedDMEvent;
27
import org.eclipse.debug.core.DebugPlugin;
27
import org.eclipse.debug.core.DebugPlugin;
Lines 75-82 Link Here
75
        // Never skip the process lifecycle events.
75
        // Never skip the process lifecycle events.
76
        if (eventToSkip instanceof InferiorExitedDMEvent || 
76
        if (eventToSkip instanceof InferiorExitedDMEvent || 
77
            eventToSkip instanceof InferiorStartedDMEvent ||
77
            eventToSkip instanceof InferiorStartedDMEvent ||
78
            eventToSkip instanceof GDBStartedEvent ||
78
            eventToSkip instanceof BackendStartedEvent ||
79
            eventToSkip instanceof GDBExitedEvent) 
79
            eventToSkip instanceof BackendExitedEvent) 
80
        {
80
        {
81
            return false;
81
            return false;
82
        }
82
        }
(-)src/org/eclipse/dd/gdb/internal/ui/viewmodel/launch/ContainerVMNode.java (-4 / +6 lines)
Lines 31-36 Link Here
31
import org.eclipse.dd.dsf.ui.viewmodel.datamodel.AbstractDMVMProvider;
31
import org.eclipse.dd.dsf.ui.viewmodel.datamodel.AbstractDMVMProvider;
32
import org.eclipse.dd.dsf.ui.viewmodel.datamodel.IDMVMContext;
32
import org.eclipse.dd.dsf.ui.viewmodel.datamodel.IDMVMContext;
33
import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl;
33
import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl;
34
import org.eclipse.dd.mi.service.command.AbstractMIControl.BackendExitedEvent;
35
import org.eclipse.dd.mi.service.command.AbstractMIControl.BackendStartedEvent;
34
import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate;
36
import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate;
35
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementCompareRequest;
37
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementCompareRequest;
36
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider;
38
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider;
Lines 125-133 Link Here
125
127
126
	@Override
128
	@Override
127
	public int getDeltaFlags(Object e) {
129
	public int getDeltaFlags(Object e) {
128
		if (e instanceof GDBControl.GDBExitedEvent) {
130
		if (e instanceof BackendExitedEvent) {
129
	        return IModelDelta.CONTENT;
131
	        return IModelDelta.CONTENT;
130
	    } else if (e instanceof GDBControl.GDBStartedEvent) {
132
	    } else if (e instanceof BackendStartedEvent) {
131
	        return IModelDelta.EXPAND;
133
	        return IModelDelta.EXPAND;
132
	    }
134
	    }
133
	    return super.getDeltaFlags(e);
135
	    return super.getDeltaFlags(e);
Lines 135-143 Link Here
135
137
136
	@Override
138
	@Override
137
	public void buildDelta(Object e, final VMDelta parentDelta, final int nodeOffset, final RequestMonitor requestMonitor) {
139
	public void buildDelta(Object e, final VMDelta parentDelta, final int nodeOffset, final RequestMonitor requestMonitor) {
138
		if (e instanceof GDBControl.GDBExitedEvent) {
140
		if (e instanceof BackendExitedEvent) {
139
	        parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
141
	        parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
140
	    } else if (e instanceof GDBControl.GDBStartedEvent) {
142
	    } else if (e instanceof BackendStartedEvent) {
141
	        parentDelta.addNode(createVMContext(((IDMEvent<?>)e).getDMContext()), IModelDelta.EXPAND);
143
	        parentDelta.addNode(createVMContext(((IDMEvent<?>)e).getDMContext()), IModelDelta.EXPAND);
142
	    } else {
144
	    } else {
143
	    	super.buildDelta(e, parentDelta, nodeOffset, requestMonitor);
145
	    	super.buildDelta(e, parentDelta, nodeOffset, requestMonitor);

Return to bug 243216