GP-3162: refresh bool->enum

This commit is contained in:
d-millar
2023-03-03 18:41:18 +00:00
parent a9baf9f6d8
commit 15c4345d71
116 changed files with 376 additions and 266 deletions

View File

@@ -22,6 +22,7 @@ import java.util.stream.Collectors;
import org.apache.commons.lang3.tuple.Pair;
import agent.dbgeng.model.iface2.*;
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
import ghidra.dbg.target.TargetObject;
import ghidra.util.datastruct.WeakValueHashMap;
@@ -36,7 +37,7 @@ public class DbgModel2TargetAvailableContainerImpl extends DbgModel2TargetObject
}
@Override
public CompletableFuture<Void> requestElements(boolean refresh) {
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
return getManager().listAvailableProcesses().thenAccept(list -> {
List<TargetObject> available;
synchronized (this) {
@@ -49,7 +50,7 @@ public class DbgModel2TargetAvailableContainerImpl extends DbgModel2TargetObject
}
@Override
public CompletableFuture<Void> requestAttributes(boolean refresh) {
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
Map<String, Object> nmap = new HashMap<>();
return addModelObjectAttributes(nmap);
}

View File

@@ -52,6 +52,7 @@ import agent.dbgmodel.jna.dbgmodel.DbgModelNative.ModelObjectKind;
import agent.dbgmodel.jna.dbgmodel.DbgModelNative.TypeKind;
import agent.dbgmodel.manager.DbgManager2Impl;
import ghidra.async.AsyncUtils;
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
import ghidra.dbg.agent.DefaultTargetObject;
import ghidra.dbg.target.TargetAccessConditioned;
import ghidra.dbg.target.TargetAttacher;
@@ -142,11 +143,11 @@ public class DbgModel2TargetObjectImpl extends DefaultTargetObject<TargetObject,
@Override
public CompletableFuture<Void> requestAugmentedAttributes() {
return requestAttributes(false);
return requestAttributes(RefreshBehavior.REFRESH_NEVER);
}
@Override
public CompletableFuture<Void> requestElements(boolean refresh) {
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
List<TargetObject> nlist = new ArrayList<>();
List<String> rlist = new ArrayList<>();
return requestNativeElements().thenCompose(list -> {
@@ -189,7 +190,7 @@ public class DbgModel2TargetObjectImpl extends DefaultTargetObject<TargetObject,
}
@Override
public CompletableFuture<Void> requestAttributes(boolean refresh) {
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
Map<String, Object> nmap = new HashMap<>();
List<String> rlist = new ArrayList<>();
return requestNativeAttributes().thenCompose(map -> {
@@ -236,7 +237,7 @@ public class DbgModel2TargetObjectImpl extends DefaultTargetObject<TargetObject,
if (proxy instanceof TargetStackFrame || //
proxy instanceof TargetModule || //
proxy instanceof TargetBreakpointSpec) {
return delegate.requestAttributes(false);
return delegate.requestAttributes(RefreshBehavior.REFRESH_NEVER);
}
}
return CompletableFuture.completedFuture(null);
@@ -328,7 +329,7 @@ public class DbgModel2TargetObjectImpl extends DefaultTargetObject<TargetObject,
memory = new DbgModelTargetMemoryContainerImpl((DbgModelTargetProcess) proxy);
}
attrs.put(memory.getName(), memory);
memory.requestElements(true);
memory.requestElements(RefreshBehavior.REFRESH_ALWAYS);
}
if (proxy instanceof TargetThread) {
DbgModelTargetThread targetThread = (DbgModelTargetThread) proxy;
@@ -394,7 +395,7 @@ public class DbgModel2TargetObjectImpl extends DefaultTargetObject<TargetObject,
if (elements.containsKey(trimKey)) {
return CompletableFuture.completedFuture(elements.get(trimKey));
}
return requestElements(false).thenApply(__ -> getCachedElements().get(trimKey));
return requestElements(RefreshBehavior.REFRESH_NEVER).thenApply(__ -> getCachedElements().get(trimKey));
}
}
synchronized (attributes) {
@@ -412,7 +413,7 @@ public class DbgModel2TargetObjectImpl extends DefaultTargetObject<TargetObject,
return obj;
});
}
return requestAttributes(false).thenApply(__ -> getCachedAttribute(key));
return requestAttributes(RefreshBehavior.REFRESH_NEVER).thenApply(__ -> getCachedAttribute(key));
}
}

View File

@@ -55,6 +55,7 @@ import agent.dbgmodel.dbgmodel.main.ModelObject;
import agent.dbgmodel.manager.DbgManager2Impl;
import ghidra.async.AsyncUtils;
import ghidra.async.TypeSpec;
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
import ghidra.dbg.target.TargetEventScope;
import ghidra.dbg.target.TargetExecutionStateful;
import ghidra.dbg.target.TargetExecutionStateful.TargetExecutionState;
@@ -227,7 +228,7 @@ public class DbgModel2TargetRootImpl extends DbgModel2DefaultTargetModelRoot
stateful.changeAttributes(List.of(), Map.of( //
TargetExecutionStateful.STATE_ATTRIBUTE_NAME, TargetExecutionState.ALIVE //
), "Selected");
stateful.fetchAttributes(true);
stateful.fetchAttributes(RefreshBehavior.REFRESH_ALWAYS);
}
}
@@ -263,7 +264,7 @@ public class DbgModel2TargetRootImpl extends DbgModel2DefaultTargetModelRoot
stateful.changeAttributes(List.of(), Map.of( //
TargetExecutionStateful.STATE_ATTRIBUTE_NAME, TargetExecutionState.ALIVE //
), "Selected");
stateful.fetchAttributes(true);
stateful.fetchAttributes(RefreshBehavior.REFRESH_ALWAYS);
}
}
@@ -283,7 +284,7 @@ public class DbgModel2TargetRootImpl extends DbgModel2DefaultTargetModelRoot
DbgModelTargetProcess eventProcess = (DbgModelTargetProcess) p;
DbgModel2TargetObjectImpl memory =
(DbgModel2TargetObjectImpl) eventProcess.getCachedAttribute("Memory");
memory.requestElements(false);
memory.requestElements(RefreshBehavior.REFRESH_NEVER);
});
});
}
@@ -304,7 +305,7 @@ public class DbgModel2TargetRootImpl extends DbgModel2DefaultTargetModelRoot
DbgModelTargetProcess eventProcess = (DbgModelTargetProcess) p;
DbgModel2TargetObjectImpl memory =
(DbgModel2TargetObjectImpl) eventProcess.getCachedAttribute("Memory");
memory.requestElements(false);
memory.requestElements(RefreshBehavior.REFRESH_NEVER);
});
});
}
@@ -642,7 +643,7 @@ public class DbgModel2TargetRootImpl extends DbgModel2DefaultTargetModelRoot
}
@Override
public CompletableFuture<Void> requestAttributes(boolean refresh) {
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
DbgManager2Impl manager2 = (DbgManager2Impl) getManager();
List<String> pathX = PathUtils.extend(List.of("Debugger"), path);
intrinsics.put(available.getName(), available);

View File

@@ -21,6 +21,7 @@ import java.util.concurrent.CompletableFuture;
import agent.dbgeng.model.iface1.DbgModelTargetInterruptible;
import agent.dbgeng.model.iface2.DbgModelTargetObject;
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
public class DbgModel2TargetSystemMarkerImpl extends DbgModel2TargetObjectImpl
implements DbgModelTargetInterruptible {
@@ -32,7 +33,7 @@ public class DbgModel2TargetSystemMarkerImpl extends DbgModel2TargetObjectImpl
}
@Override
public CompletableFuture<Void> requestAttributes(boolean refresh) {
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
Map<String, Object> nmap = new HashMap<>();
return addModelObjectAttributes(nmap);
}

View File

@@ -27,6 +27,7 @@ import agent.dbgeng.model.iface1.*;
import agent.dbgeng.model.iface2.*;
import agent.dbgmodel.dbgmodel.main.ModelObject;
import agent.dbgmodel.jna.dbgmodel.DbgModelNative.ModelObjectKind;
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
import ghidra.dbg.target.*;
import ghidra.dbg.target.TargetBreakpointSpec.TargetBreakpointAction;
import ghidra.dbg.util.PathUtils;
@@ -320,13 +321,13 @@ public class DelegateDbgModel2TargetObject extends DbgModel2TargetObjectImpl imp
if (proxy instanceof DbgModelTargetSession || //
proxy instanceof DbgModelTargetProcess || //
proxy instanceof DbgModelTargetThread) {
requestAttributes(false);
requestAttributes(RefreshBehavior.REFRESH_NEVER);
return;
}
if (proxy instanceof DbgModelTargetRegisterContainer || //
proxy instanceof DbgModelTargetRegisterBank || //
proxy.getName().equals("Stack") || proxy.getName().equals("Debug")) {
requestAttributes(false);
requestAttributes(RefreshBehavior.REFRESH_NEVER);
return;
}
if (proxy instanceof DbgModelTargetProcessContainer || //
@@ -334,7 +335,7 @@ public class DelegateDbgModel2TargetObject extends DbgModel2TargetObjectImpl imp
proxy instanceof DbgModelTargetModuleContainer || //
proxy instanceof DbgModelTargetBreakpointContainer || //
proxy instanceof DbgModelTargetStack) {
requestElements(false);
requestElements(RefreshBehavior.REFRESH_NEVER);
return;
}
}
@@ -439,20 +440,20 @@ public class DelegateDbgModel2TargetObject extends DbgModel2TargetObjectImpl imp
}
if (proxy instanceof TargetRegisterContainer) {
if (!getModel().isSuppressDescent()) {
requestElements(false);
requestElements(RefreshBehavior.REFRESH_NEVER);
}
requestAttributes(false);
requestAttributes(RefreshBehavior.REFRESH_NEVER);
}
if (proxy instanceof TargetRegisterBank) {
TargetRegisterBank bank = (TargetRegisterBank) proxy;
// requestElements(false);
requestAttributes(false).thenAccept(__ -> {
requestAttributes(RefreshBehavior.REFRESH_NEVER).thenAccept(__ -> {
bank.readRegistersNamed(getCachedAttributes().keySet());
});
}
if (proxy instanceof TargetStack) {
requestAttributes(false);
requestElements(false).thenAccept(__ -> {
requestAttributes(RefreshBehavior.REFRESH_NEVER);
requestElements(RefreshBehavior.REFRESH_NEVER).thenAccept(__ -> {
for (TargetObject obj : getCachedElements().values()) {
if (obj instanceof TargetStackFrame) {
DbgModelTargetObject frame = (DbgModelTargetObject) obj;
@@ -463,7 +464,7 @@ public class DelegateDbgModel2TargetObject extends DbgModel2TargetObjectImpl imp
});
}
if (proxy instanceof TargetStackFrame) {
requestAttributes(false);
requestAttributes(RefreshBehavior.REFRESH_NEVER);
}
}
}