mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Refactor of MISignal to MISigHandle to not to confuse
with cli "signal SIGNAL".
This commit is contained in:
parent
9f080ee5e6
commit
4e6954c190
4 changed files with 69 additions and 36 deletions
|
@ -21,23 +21,23 @@ import org.eclipse.cdt.debug.mi.core.command.MIInfoSignals;
|
||||||
import org.eclipse.cdt.debug.mi.core.event.MIEvent;
|
import org.eclipse.cdt.debug.mi.core.event.MIEvent;
|
||||||
import org.eclipse.cdt.debug.mi.core.event.MISignalChangedEvent;
|
import org.eclipse.cdt.debug.mi.core.event.MISignalChangedEvent;
|
||||||
import org.eclipse.cdt.debug.mi.core.output.MIInfoSignalsInfo;
|
import org.eclipse.cdt.debug.mi.core.output.MIInfoSignalsInfo;
|
||||||
import org.eclipse.cdt.debug.mi.core.output.MISignal;
|
import org.eclipse.cdt.debug.mi.core.output.MISigHandle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
public class SignalManager extends SessionObject implements ICDISignalManager {
|
public class SignalManager extends SessionObject implements ICDISignalManager {
|
||||||
|
|
||||||
boolean autoupdate;
|
boolean autoupdate;
|
||||||
MISignal[] noSigs = new MISignal[0];
|
MISigHandle[] noSigs = new MISigHandle[0];
|
||||||
List signalsList = Collections.synchronizedList(new ArrayList(5));
|
List signalsList = null;
|
||||||
|
|
||||||
public SignalManager(Session session) {
|
public SignalManager(Session session) {
|
||||||
super(session);
|
super(session);
|
||||||
autoupdate = false;
|
autoupdate = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
MISignal[] getMISignals() throws CDIException {
|
MISigHandle[] getMISignals() throws CDIException {
|
||||||
MISignal[] miSigs = noSigs;
|
MISigHandle[] miSigs = noSigs;
|
||||||
Session session = (Session)getSession();
|
Session session = (Session)getSession();
|
||||||
MISession mi = session.getMISession();
|
MISession mi = session.getMISession();
|
||||||
CommandFactory factory = mi.getCommandFactory();
|
CommandFactory factory = mi.getCommandFactory();
|
||||||
|
@ -55,8 +55,8 @@ public class SignalManager extends SessionObject implements ICDISignalManager {
|
||||||
return miSigs;
|
return miSigs;
|
||||||
}
|
}
|
||||||
|
|
||||||
MISignal getMISignal(String name) throws CDIException {
|
MISigHandle getMISignal(String name) throws CDIException {
|
||||||
MISignal sig = null;
|
MISigHandle sig = null;
|
||||||
Session session = (Session)getSession();
|
Session session = (Session)getSession();
|
||||||
MISession mi = session.getMISession();
|
MISession mi = session.getMISession();
|
||||||
CommandFactory factory = mi.getCommandFactory();
|
CommandFactory factory = mi.getCommandFactory();
|
||||||
|
@ -67,7 +67,7 @@ public class SignalManager extends SessionObject implements ICDISignalManager {
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
throw new CDIException("No answer");
|
throw new CDIException("No answer");
|
||||||
}
|
}
|
||||||
MISignal[] miSigs = info.getMISignals();
|
MISigHandle[] miSigs = info.getMISignals();
|
||||||
if (miSigs.length > 0) {
|
if (miSigs.length > 0) {
|
||||||
sig = miSigs[0];
|
sig = miSigs[0];
|
||||||
}
|
}
|
||||||
|
@ -83,14 +83,15 @@ public class SignalManager extends SessionObject implements ICDISignalManager {
|
||||||
* @param mISignal
|
* @param mISignal
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
private boolean hasSignalChanged(ICDISignal sig, MISignal miSignal) {
|
private boolean hasSignalChanged(ICDISignal sig, MISigHandle miSignal) {
|
||||||
return !sig.getName().equals(miSignal.getName()) ; /* ||
|
return !sig.getName().equals(miSignal.getName()) ||
|
||||||
sig.isStopSet() != miSignal.isStop() ||
|
sig.isStopSet() != miSignal.isStop() ||
|
||||||
sig.isIgnore() == miSignal.isPass(); */
|
sig.isIgnore() != !miSignal.isPass();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICDISignal findSignal(String name) {
|
public ICDISignal findSignal(String name) {
|
||||||
ICDISignal sig = null;
|
ICDISignal sig = null;
|
||||||
|
if (signalsList != null) {
|
||||||
ICDISignal[] sigs = (ICDISignal[])signalsList.toArray(new ICDISignal[0]);
|
ICDISignal[] sigs = (ICDISignal[])signalsList.toArray(new ICDISignal[0]);
|
||||||
for (int i = 0; i < sigs.length; i++) {
|
for (int i = 0; i < sigs.length; i++) {
|
||||||
if (sigs[i].getName().equals(name)) {
|
if (sigs[i].getName().equals(name)) {
|
||||||
|
@ -98,6 +99,7 @@ public class SignalManager extends SessionObject implements ICDISignalManager {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return sig;
|
return sig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,9 +107,11 @@ public class SignalManager extends SessionObject implements ICDISignalManager {
|
||||||
ICDISignal sig = findSignal(name);
|
ICDISignal sig = findSignal(name);
|
||||||
if (sig == null) {
|
if (sig == null) {
|
||||||
try {
|
try {
|
||||||
MISignal miSig = getMISignal(name);
|
MISigHandle miSig = getMISignal(name);
|
||||||
sig = new Signal(this, miSig);
|
sig = new Signal(this, miSig);
|
||||||
|
if (signalsList != null) {
|
||||||
signalsList.add(sig);
|
signalsList.add(sig);
|
||||||
|
}
|
||||||
} catch (CDIException e) {
|
} catch (CDIException e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -138,12 +142,17 @@ public class SignalManager extends SessionObject implements ICDISignalManager {
|
||||||
} catch (MIException e) {
|
} catch (MIException e) {
|
||||||
throw new MI2CDIException(e);
|
throw new MI2CDIException(e);
|
||||||
}
|
}
|
||||||
|
((Signal)sig).getMISignal().handle(isIgnore, isStop);
|
||||||
|
mi.fireEvent(new MISignalChangedEvent(sig.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.eclipse.cdt.debug.core.cdi.ICDISignalManager#getSignals()
|
* @see org.eclipse.cdt.debug.core.cdi.ICDISignalManager#getSignals()
|
||||||
*/
|
*/
|
||||||
public ICDISignal[] getSignals() throws CDIException {
|
public ICDISignal[] getSignals() throws CDIException {
|
||||||
|
if (signalsList == null) {
|
||||||
|
update();
|
||||||
|
}
|
||||||
return (ICDISignal[])signalsList.toArray(new ICDISignal[0]);
|
return (ICDISignal[])signalsList.toArray(new ICDISignal[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,8 +174,11 @@ public class SignalManager extends SessionObject implements ICDISignalManager {
|
||||||
* @see org.eclipse.cdt.debug.core.cdi.ICDISignalManager#update()
|
* @see org.eclipse.cdt.debug.core.cdi.ICDISignalManager#update()
|
||||||
*/
|
*/
|
||||||
public void update() throws CDIException {
|
public void update() throws CDIException {
|
||||||
|
if (signalsList == null) {
|
||||||
|
signalsList = Collections.synchronizedList(new ArrayList(5));
|
||||||
|
}
|
||||||
Session session = (Session)getSession();
|
Session session = (Session)getSession();
|
||||||
MISignal[] miSigs = getMISignals();
|
MISigHandle[] miSigs = getMISignals();
|
||||||
List eventList = new ArrayList(miSigs.length);
|
List eventList = new ArrayList(miSigs.length);
|
||||||
for (int i = 0; i < miSigs.length; i++) {
|
for (int i = 0; i < miSigs.length; i++) {
|
||||||
ICDISignal sig = findSignal(miSigs[i].getName());
|
ICDISignal sig = findSignal(miSigs[i].getName());
|
||||||
|
@ -186,4 +198,10 @@ public class SignalManager extends SessionObject implements ICDISignalManager {
|
||||||
mi.fireEvents(events);
|
mi.fireEvents(events);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method signal.
|
||||||
|
*/
|
||||||
|
public void signal() {
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,58 +8,68 @@ package org.eclipse.cdt.debug.mi.core.cdi.model;
|
||||||
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
|
||||||
import org.eclipse.cdt.debug.mi.core.cdi.SignalManager;
|
import org.eclipse.cdt.debug.mi.core.cdi.SignalManager;
|
||||||
import org.eclipse.cdt.debug.mi.core.output.MISignal;
|
import org.eclipse.cdt.debug.mi.core.output.MISigHandle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
public class Signal extends CObject implements ICDISignal {
|
public class Signal extends CObject implements ICDISignal {
|
||||||
|
|
||||||
SignalManager mgr;
|
SignalManager mgr;
|
||||||
MISignal sig;
|
MISigHandle sig;
|
||||||
|
|
||||||
public Signal(SignalManager m, MISignal s) {
|
public Signal(SignalManager m, MISigHandle s) {
|
||||||
super(m.getSession().getCurrentTarget());
|
super(m.getSession().getCurrentTarget());
|
||||||
mgr = m;
|
mgr = m;
|
||||||
sig = s;
|
sig = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMISignal(MISignal s) {
|
public void setMISignal(MISigHandle s) {
|
||||||
sig = s;
|
sig = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MISigHandle getMISignal() {
|
||||||
|
return sig;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.eclipse.cdt.debug.core.cdi.ICDISignalReceived#getMeaning()
|
* @see org.eclipse.cdt.debug.core.cdi.ICDISignal#getMeaning()
|
||||||
*/
|
*/
|
||||||
public String getMeaning() {
|
public String getDescription() {
|
||||||
return sig.getDescription();
|
return sig.getDescription();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.eclipse.cdt.debug.core.cdi.ICDISignalReceived#getName()
|
* @see org.eclipse.cdt.debug.core.cdi.ICDISignal#getName()
|
||||||
*/
|
*/
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return sig.getName();
|
return sig.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.eclipse.cdt.debug.core.cdi.ICDISignalReceived#handle()
|
* @see org.eclipse.cdt.debug.core.cdi.ICDISignal#handle()
|
||||||
*/
|
*/
|
||||||
public void handle(boolean ignore, boolean stop) throws CDIException {
|
public void handle(boolean ignore, boolean stop) throws CDIException {
|
||||||
mgr.handle(this, ignore, stop);
|
mgr.handle(this, ignore, stop);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.eclipse.cdt.debug.core.cdi.ICDISignalReceived#isIgnore()
|
* @see org.eclipse.cdt.debug.core.cdi.ICDISignal#isIgnore()
|
||||||
*/
|
*/
|
||||||
public boolean isIgnore() {
|
public boolean isIgnore() {
|
||||||
return !sig.isPass();
|
return !sig.isPass();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.eclipse.cdt.debug.core.cdi.ICDISignalReceived#isStopSet()
|
* @see org.eclipse.cdt.debug.core.cdi.ICDISignal#isStopSet()
|
||||||
*/
|
*/
|
||||||
public boolean isStopSet() {
|
public boolean isStopSet() {
|
||||||
return sig.isStop();
|
return sig.isStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Continue program giving it signal specified by the argument.
|
||||||
|
*/
|
||||||
|
public void signal() {
|
||||||
|
mgr.signal();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,14 +24,14 @@ import java.util.StringTokenizer;
|
||||||
*/
|
*/
|
||||||
public class MIInfoSignalsInfo extends MIInfo {
|
public class MIInfoSignalsInfo extends MIInfo {
|
||||||
|
|
||||||
MISignal[] signals;
|
MISigHandle[] signals;
|
||||||
|
|
||||||
public MIInfoSignalsInfo(MIOutput out) {
|
public MIInfoSignalsInfo(MIOutput out) {
|
||||||
super(out);
|
super(out);
|
||||||
parse();
|
parse();
|
||||||
}
|
}
|
||||||
|
|
||||||
public MISignal[] getMISignals() {
|
public MISigHandle[] getMISignals() {
|
||||||
return signals;
|
return signals;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,9 +49,9 @@ public class MIInfoSignalsInfo extends MIInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
signals = new MISignal[aList.size()];
|
signals = new MISigHandle[aList.size()];
|
||||||
for (int i = 0; i < aList.size(); i++) {
|
for (int i = 0; i < aList.size(); i++) {
|
||||||
signals[i] = (MISignal)aList.get(i);
|
signals[i] = (MISigHandle)aList.get(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ public class MIInfoSignalsInfo extends MIInfo {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MISignal s = new MISignal(signal, stop, print, pass, desc.trim());
|
MISigHandle s = new MISigHandle(signal, stop, print, pass, desc.trim());
|
||||||
aList.add(s);
|
aList.add(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ package org.eclipse.cdt.debug.mi.core.output;
|
||||||
/**
|
/**
|
||||||
* GDB/MI shared information
|
* GDB/MI shared information
|
||||||
*/
|
*/
|
||||||
public class MISignal {
|
public class MISigHandle {
|
||||||
|
|
||||||
String signal = "";
|
String signal = "";
|
||||||
boolean stop;
|
boolean stop;
|
||||||
|
@ -16,7 +16,7 @@ public class MISignal {
|
||||||
boolean pass;
|
boolean pass;
|
||||||
String description = "";
|
String description = "";
|
||||||
|
|
||||||
public MISignal (String name, boolean stp, boolean prnt, boolean ps, String desc) {
|
public MISigHandle (String name, boolean stp, boolean prnt, boolean ps, String desc) {
|
||||||
signal = name;
|
signal = name;
|
||||||
stop = stp;
|
stop = stp;
|
||||||
print = prnt;
|
print = prnt;
|
||||||
|
@ -40,6 +40,11 @@ public class MISignal {
|
||||||
return pass;
|
return pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void handle(boolean isIgnore, boolean isStop) {
|
||||||
|
pass = !isIgnore;
|
||||||
|
stop = isStop;
|
||||||
|
}
|
||||||
|
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return description;
|
return description;
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue