mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-06 03:50:02 +02:00
GP-2752: Remove TargetObject.addListener() and related
This commit is contained in:
parent
c301dd2c89
commit
50c7217635
78 changed files with 384 additions and 1261 deletions
|
@ -22,7 +22,6 @@ import java.util.stream.Collectors;
|
|||
import com.sun.jdi.ReferenceType;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.async.AsyncUtils;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.util.Msg;
|
||||
|
||||
|
@ -90,9 +89,6 @@ public class JdiModelTargetClassContainer extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
public CompletableFuture<?> refreshInternal() {
|
||||
if (!isObserved()) {
|
||||
return AsyncUtils.NIL;
|
||||
}
|
||||
return doRefresh().exceptionally(ex -> {
|
||||
Msg.error(this, "Problem refreshing vm's classes", ex);
|
||||
return null;
|
||||
|
|
|
@ -23,7 +23,6 @@ import com.sun.jdi.VirtualMachineManager;
|
|||
import com.sun.jdi.connect.Connector;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.async.AsyncUtils;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.util.Msg;
|
||||
|
||||
|
@ -96,9 +95,6 @@ public class JdiModelTargetConnectorContainer extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
public CompletableFuture<?> refreshInternal() {
|
||||
if (!isObserved()) {
|
||||
return AsyncUtils.NIL;
|
||||
}
|
||||
return doRefresh().exceptionally(ex -> {
|
||||
Msg.error(this, "Problem refreshing inferior's modules", ex);
|
||||
return null;
|
||||
|
|
|
@ -22,7 +22,6 @@ import java.util.stream.Collectors;
|
|||
import com.sun.jdi.ModuleReference;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.async.AsyncUtils;
|
||||
import ghidra.dbg.error.DebuggerUserException;
|
||||
import ghidra.dbg.target.TargetModule;
|
||||
import ghidra.dbg.target.TargetModuleContainer;
|
||||
|
@ -136,9 +135,6 @@ public class JdiModelTargetModuleContainer extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
public CompletableFuture<?> refreshInternal() {
|
||||
if (!isObserved()) {
|
||||
return AsyncUtils.NIL;
|
||||
}
|
||||
return doRefresh().exceptionally(ex -> {
|
||||
Msg.error(this, "Problem refreshing inferior's modules", ex);
|
||||
return null;
|
||||
|
|
|
@ -106,7 +106,7 @@ public class JdiModelTargetProcess extends JdiModelTargetObjectImpl
|
|||
default:
|
||||
throw new AssertionError();
|
||||
}
|
||||
listeners.fire.consoleOutput(this, channel, out);
|
||||
broadcast().consoleOutput(this, channel, out);
|
||||
}
|
||||
|
||||
private void readStream(InputStream in, TargetConsole.Channel channel) {
|
||||
|
|
|
@ -20,7 +20,6 @@ import java.util.concurrent.CompletableFuture;
|
|||
|
||||
import com.sun.jdi.Location;
|
||||
|
||||
import ghidra.async.AsyncUtils;
|
||||
import ghidra.dbg.target.TargetRegisterBank;
|
||||
import ghidra.dbg.target.TargetRegisterContainer;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
@ -121,7 +120,7 @@ public class JdiModelTargetRegisterContainer extends JdiModelTargetObjectImpl
|
|||
map.put(retAddr.getIndex(), bytes);
|
||||
}
|
||||
if (!map.isEmpty()) {
|
||||
listeners.fire.registersUpdated(this, map);
|
||||
broadcast().registersUpdated(this, map);
|
||||
}
|
||||
return CompletableFuture.completedFuture(map);
|
||||
}
|
||||
|
@ -133,13 +132,10 @@ public class JdiModelTargetRegisterContainer extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
public void invalidateRegisterCaches() {
|
||||
listeners.fire.invalidateCacheRequested(this);
|
||||
broadcast().invalidateCacheRequested(this);
|
||||
}
|
||||
|
||||
protected CompletableFuture<?> update() {
|
||||
if (!isObserved()) {
|
||||
return AsyncUtils.NIL;
|
||||
}
|
||||
return fetchElements(true).exceptionally(e -> {
|
||||
Msg.error(this, "Could not update registers " + this + " on STOPPED");
|
||||
return null;
|
||||
|
|
|
@ -125,12 +125,12 @@ public class JdiModelTargetSectionContainer extends JdiModelTargetObjectImpl
|
|||
bytes[i] = (byte) 0xFF;
|
||||
}
|
||||
}
|
||||
listeners.fire.memoryUpdated(this, address, bytes);
|
||||
broadcast().memoryUpdated(this, address, bytes);
|
||||
return CompletableFuture.completedFuture(bytes);
|
||||
}
|
||||
if (addressSpace.equals(impl.getAddressSpace("constantPool"))) {
|
||||
byte[] bytes = constantPool.getPool();
|
||||
listeners.fire.memoryUpdated(this, address, bytes);
|
||||
broadcast().memoryUpdated(this, address, bytes);
|
||||
return CompletableFuture.completedFuture(bytes);
|
||||
}
|
||||
throw new RuntimeException();
|
||||
|
|
|
@ -20,7 +20,6 @@ import java.util.concurrent.CompletableFuture;
|
|||
|
||||
import com.sun.jdi.*;
|
||||
|
||||
import ghidra.async.AsyncUtils;
|
||||
import ghidra.dbg.target.TargetStack;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.util.Msg;
|
||||
|
@ -104,9 +103,6 @@ public class JdiModelTargetStack extends JdiModelTargetObjectImpl
|
|||
* @return null
|
||||
*/
|
||||
protected CompletableFuture<?> update() {
|
||||
if (!isObserved()) {
|
||||
return AsyncUtils.NIL;
|
||||
}
|
||||
return fetchElements(true).exceptionally(e -> {
|
||||
Msg.error(this, "Could not update stack " + this + " on STOPPED");
|
||||
return null;
|
||||
|
@ -114,6 +110,6 @@ public class JdiModelTargetStack extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
public void invalidateRegisterCaches() {
|
||||
listeners.fire.invalidateCacheRequested(this);
|
||||
broadcast().invalidateCacheRequested(this);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ public class JdiModelTargetThreadContainer extends JdiModelTargetObjectImpl
|
|||
TargetExecutionState targetState = targetThread.convertState(state);
|
||||
targetThread.threadStateChanged(targetState);
|
||||
TargetEventType eventType = getEventType(reason);
|
||||
getListeners().fire.event(this, targetThread, eventType,
|
||||
broadcast().event(this, targetThread, eventType,
|
||||
"Thread " + targetThread.getName() + " state changed", List.of(targetThread));
|
||||
}
|
||||
|
||||
|
|
|
@ -31,11 +31,15 @@ import ghidra.dbg.target.schema.*;
|
|||
import ghidra.util.Msg;
|
||||
import ghidra.util.datastruct.WeakValueHashMap;
|
||||
|
||||
@TargetObjectSchemaInfo(name = "VMContainer", elements = { //
|
||||
@TargetElementType(type = JdiModelTargetVM.class) //
|
||||
}, attributes = { //
|
||||
@TargetAttributeType(type = Void.class) //
|
||||
}, canonicalContainer = true)
|
||||
@TargetObjectSchemaInfo(
|
||||
name = "VMContainer",
|
||||
elements = { //
|
||||
@TargetElementType(type = JdiModelTargetVM.class) //
|
||||
},
|
||||
attributes = { //
|
||||
@TargetAttributeType(type = Void.class) //
|
||||
},
|
||||
canonicalContainer = true)
|
||||
public class JdiModelTargetVMContainer extends JdiModelTargetObjectImpl
|
||||
implements JdiEventsListenerAdapter {
|
||||
|
||||
|
@ -56,7 +60,7 @@ public class JdiModelTargetVMContainer extends JdiModelTargetObjectImpl
|
|||
// TODO: Move PROCESS_CREATED here to restore proper order of event reporting
|
||||
// Pending some client-side changes to handle architecture selection, though.
|
||||
target.started(vm.name()).thenAccept(__ -> {
|
||||
session.getListeners().fire.event(session, null, TargetEventType.PROCESS_CREATED,
|
||||
broadcast().event(session, null, TargetEventType.PROCESS_CREATED,
|
||||
"VM " + vm.name() + " started " + vm.process() + " pid=" + vm.name(), List.of(vm));
|
||||
}).exceptionally(ex -> {
|
||||
Msg.error(this, "Could not notify vm started", ex);
|
||||
|
@ -70,8 +74,8 @@ public class JdiModelTargetVMContainer extends JdiModelTargetObjectImpl
|
|||
public void vmDied(VMDeathEvent event, JdiCause cause) {
|
||||
VirtualMachine vm = event.virtualMachine();
|
||||
JdiModelTargetVM tgtVM = vmsById.get(vm.name());
|
||||
session.getListeners().fire.event(session, null, TargetEventType.PROCESS_EXITED,
|
||||
"VM " + vm.name(), List.of(tgtVM));
|
||||
broadcast().event(session, null, TargetEventType.PROCESS_EXITED, "VM " + vm.name(),
|
||||
List.of(tgtVM));
|
||||
tgtVM.exited(vm);
|
||||
synchronized (this) {
|
||||
vmsById.remove(vm.name());
|
||||
|
@ -99,7 +103,7 @@ public class JdiModelTargetVMContainer extends JdiModelTargetObjectImpl
|
|||
return;
|
||||
}
|
||||
JdiModelTargetThread targetThread = vm.threads.threadCreated(thread);
|
||||
session.getListeners().fire.event(session, targetThread, TargetEventType.THREAD_CREATED,
|
||||
broadcast().event(session, targetThread, TargetEventType.THREAD_CREATED,
|
||||
"Thread " + thread.name() + " started", List.of(targetThread));
|
||||
}
|
||||
|
||||
|
@ -108,7 +112,7 @@ public class JdiModelTargetVMContainer extends JdiModelTargetObjectImpl
|
|||
ThreadReference thread = event.thread();
|
||||
JdiModelTargetVM tgtVM = vmsById.get(thread.virtualMachine().name());
|
||||
JdiModelTargetThread targetThread = tgtVM.threads.threadsById.get(thread.name());
|
||||
session.getListeners().fire.event(session, targetThread, TargetEventType.THREAD_EXITED,
|
||||
broadcast().event(session, targetThread, TargetEventType.THREAD_EXITED,
|
||||
"Thread " + thread.name() + " exited", List.of(targetThread));
|
||||
tgtVM.threads.threadExited(thread);
|
||||
}
|
||||
|
|
|
@ -21,7 +21,6 @@ import java.util.concurrent.CompletableFuture;
|
|||
|
||||
import com.sun.jdi.*;
|
||||
|
||||
import ghidra.dbg.DebuggerModelListener;
|
||||
import ghidra.dbg.agent.InvalidatableTargetObjectIf;
|
||||
import ghidra.dbg.jdi.manager.JdiManager;
|
||||
import ghidra.dbg.jdi.model.*;
|
||||
|
@ -30,7 +29,6 @@ import ghidra.dbg.target.schema.EnumerableTargetObjectSchema;
|
|||
import ghidra.dbg.target.schema.TargetObjectSchema;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName;
|
||||
import ghidra.dbg.util.CollectionUtils.Delta;
|
||||
import ghidra.util.datastruct.ListenerSet;
|
||||
|
||||
public interface JdiModelTargetObject extends TargetObject, InvalidatableTargetObjectIf {
|
||||
|
||||
|
@ -56,8 +54,6 @@ public interface JdiModelTargetObject extends TargetObject, InvalidatableTargetO
|
|||
|
||||
public Delta<?, ?> changeAttributes(List<String> remove, Map<String, ?> add, String reason);
|
||||
|
||||
public ListenerSet<DebuggerModelListener> getListeners();
|
||||
|
||||
public default JdiModelTargetObject getInstance(Mirror object) {
|
||||
JdiModelTargetObject targetObject = getTargetObject(object);
|
||||
if (targetObject == null) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue