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

Added a status functionality to the CDebugElement class.

This commit is contained in:
Mikhail Khodjaiants 2003-05-05 19:51:13 +00:00
parent 1f3480e46a
commit bcc744554c
4 changed files with 75 additions and 13 deletions

View file

@ -0,0 +1,25 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.core.model;
/**
* Represents the status of a debug element.
*
* @since May 2, 2003
*/
public interface ICDebugElementErrorStatus
{
public static final int OK = 0;
public static final int WARNING = 1;
public static final int ERROR = 2;
boolean isOK();
int getSeverity();
String getMessage();
}

View file

@ -11,6 +11,7 @@ import org.eclipse.cdt.debug.core.CDebugModel;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDISession;
import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.model.ICDebugElementErrorStatus;
import org.eclipse.cdt.debug.internal.core.CDebugUtils;
import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
import org.eclipse.core.runtime.IStatus;
@ -30,10 +31,14 @@ import org.eclipse.debug.core.model.IDebugTarget;
* @since Aug 1, 2002
*/
public class CDebugElement extends PlatformObject
implements IDebugElement
implements IDebugElement,
ICDebugElementErrorStatus
{
private CDebugTarget fDebugTarget;
private int fSeverity = ICDebugElementErrorStatus.OK;
private String fMessage = null;
/**
* Constructor for CDebugElement.
*/
@ -284,4 +289,42 @@ public class CDebugElement extends PlatformObject
return getCDISession();
return super.getAdapter(adapter);
}
protected void setStatus( int severity, String message )
{
fSeverity = severity;
fMessage = message;
if ( fMessage != null )
fMessage.trim();
}
protected void resetStatus()
{
fSeverity = ICDebugElementErrorStatus.OK;
fMessage = null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.ICDebugElementErrorStatus#isOK()
*/
public boolean isOK()
{
return ( fSeverity == ICDebugElementErrorStatus.OK );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.ICDebugElementErrorStatus#getSeverity()
*/
public int getSeverity()
{
return fSeverity;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.ICDebugElementErrorStatus#getMessage()
*/
public String getMessage()
{
return fMessage;
}
}

View file

@ -1173,6 +1173,7 @@ public class CDebugTarget extends CDebugElement
*/
protected void cleanup()
{
resetStatus();
removeAllThreads();
getCDISession().getEventManager().removeEventListener( this );
DebugPlugin.getDefault().getBreakpointManager().removeBreakpointListener( this );
@ -1401,6 +1402,7 @@ public class CDebugTarget extends CDebugElement
setSuspended( false );
setCurrentStateId( IState.RUNNING );
setCurrentStateInfo( null );
resetStatus();
resumeThreads( event );
int detail = DebugEvent.UNSPECIFIED;
switch( event.getType() )

View file

@ -10,7 +10,6 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIConfiguration;
import org.eclipse.cdt.debug.core.cdi.ICDIEndSteppingRange;
@ -28,6 +27,7 @@ import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.core.cdi.model.ICDIThread;
import org.eclipse.cdt.debug.core.model.ICDebugElementErrorStatus;
import org.eclipse.cdt.debug.core.model.IDummyStackFrame;
import org.eclipse.cdt.debug.core.model.IInstructionStep;
import org.eclipse.cdt.debug.core.model.IRestart;
@ -36,12 +36,7 @@ import org.eclipse.cdt.debug.core.model.IRunToLine;
import org.eclipse.cdt.debug.core.model.IState;
import org.eclipse.cdt.debug.core.model.ISwitchToFrame;
import org.eclipse.cdt.debug.core.sourcelookup.ISourceMode;
import org.eclipse.cdt.debug.internal.core.CDebugUtils;
import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IBreakpoint;
@ -273,6 +268,7 @@ public class CThread extends CDebugElement
}
catch( CDIException e )
{
setStatus( ICDebugElementErrorStatus.WARNING, "Stack is not available: " + e.getMessage() );
targetRequestFailed( e.getMessage(), null );
}
return new ICDIStackFrame[0];
@ -744,6 +740,7 @@ public class CThread extends CDebugElement
}
fStackFrames.clear();
setLastStackDepth( 0 );
resetStatus();
setRefreshChildren( true );
}
@ -1084,12 +1081,7 @@ public class CThread extends CDebugElement
}
catch( CDIException e )
{
MultiStatus status = new MultiStatus( CDebugCorePlugin.getUniqueIdentifier(),
ICDebugInternalConstants.STATUS_CODE_ERROR,
"Stack is not available.",
null );
status.add( new Status( IStatus.ERROR, status.getPlugin(), status.getCode(), e.getMessage(), null ) );
CDebugUtils.error( status, getDebugTarget() );
setStatus( ICDebugElementErrorStatus.WARNING, "Stack is not available: " + e.getMessage() );
}
return depth;
}