mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 02:39:44 +02:00
GP-704: Converting models to a push-centric comm pattern.
This commit is contained in:
parent
dd37995833
commit
5bb6f95a84
95 changed files with 2348 additions and 1635 deletions
|
@ -21,7 +21,7 @@ import ghidra.dbg.target.TargetEnvironment;
|
|||
public interface DbgModelTargetEnvironment<T extends TargetEnvironment<T>>
|
||||
extends DbgModelTargetObject, TargetEnvironment<T> {
|
||||
|
||||
public void refresh();
|
||||
public void refreshInternal();
|
||||
|
||||
@Override
|
||||
public default String getArchitecture() {
|
||||
|
|
|
@ -20,7 +20,7 @@ import ghidra.dbg.target.TargetEnvironment;
|
|||
public interface DbgModelTargetEnvironmentEx
|
||||
extends DbgModelTargetObject, TargetEnvironment<DbgModelTargetEnvironmentEx> {
|
||||
|
||||
public void refresh();
|
||||
public void refreshInternal();
|
||||
|
||||
/*
|
||||
@Override
|
||||
|
|
|
@ -23,11 +23,13 @@ import agent.dbgeng.dbgeng.DebugClient.DebugStatus;
|
|||
import agent.dbgeng.manager.impl.DbgManagerImpl;
|
||||
import agent.dbgeng.model.AbstractDbgModel;
|
||||
import ghidra.dbg.agent.InvalidatableTargetObjectIf;
|
||||
import ghidra.dbg.agent.SpiTargetObject;
|
||||
import ghidra.dbg.target.TargetObject;
|
||||
import ghidra.dbg.target.TargetObject.TargetObjectListener;
|
||||
import ghidra.dbg.util.CollectionUtils.Delta;
|
||||
import ghidra.util.datastruct.ListenerSet;
|
||||
|
||||
public interface DbgModelTargetObject extends TargetObject, InvalidatableTargetObjectIf {
|
||||
public interface DbgModelTargetObject extends SpiTargetObject, InvalidatableTargetObjectIf {
|
||||
|
||||
@Override
|
||||
public AbstractDbgModel getModel();
|
||||
|
|
|
@ -60,6 +60,7 @@ public class DbgModelImpl extends AbstractDbgModel {
|
|||
s.add();
|
||||
DbgModelTargetSessionContainer sessions = root.sessions;
|
||||
this.session = (DbgModelTargetSessionImpl) sessions.getTargetSession(s);
|
||||
addModelRoot(root);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -110,7 +111,7 @@ public class DbgModelImpl extends AbstractDbgModel {
|
|||
public CompletableFuture<Void> close() {
|
||||
try {
|
||||
terminate();
|
||||
return CompletableFuture.completedFuture(null);
|
||||
return super.close();
|
||||
}
|
||||
catch (Throwable t) {
|
||||
return CompletableFuture.failedFuture(t);
|
||||
|
|
|
@ -56,8 +56,8 @@ public class DbgModelTargetObjectImpl extends DefaultTargetObject<TargetObject,
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void doInvalidate(String reason) {
|
||||
super.doInvalidate(reason);
|
||||
protected void doInvalidate(TargetObject branch, String reason) {
|
||||
super.doInvalidate(branch, reason);
|
||||
getManager().removeStateListener(accessListener);
|
||||
}
|
||||
|
||||
|
|
|
@ -30,14 +30,29 @@ import ghidra.dbg.target.*;
|
|||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.dbg.util.PathUtils;
|
||||
|
||||
@TargetObjectSchemaInfo(name = "Debugger", elements = { //
|
||||
@TargetElementType(type = Void.class) //
|
||||
}, attributes = { //
|
||||
@TargetAttributeType(name = "Available", type = DbgModelTargetAvailableContainerImpl.class, required = true, fixed = true), //
|
||||
@TargetAttributeType(name = "Connectors", type = DbgModelTargetConnectorContainerImpl.class, required = true, fixed = true), //
|
||||
@TargetAttributeType(name = "Sessions", type = DbgModelTargetSessionContainerImpl.class, required = true, fixed = true), //
|
||||
@TargetAttributeType(type = Void.class) //
|
||||
})
|
||||
@TargetObjectSchemaInfo(
|
||||
name = "Debugger",
|
||||
elements = { //
|
||||
@TargetElementType(type = Void.class) //
|
||||
},
|
||||
attributes = { //
|
||||
@TargetAttributeType(
|
||||
name = "Available",
|
||||
type = DbgModelTargetAvailableContainerImpl.class,
|
||||
required = true,
|
||||
fixed = true), //
|
||||
@TargetAttributeType(
|
||||
name = "Connectors",
|
||||
type = DbgModelTargetConnectorContainerImpl.class,
|
||||
required = true,
|
||||
fixed = true), //
|
||||
@TargetAttributeType(
|
||||
name = "Sessions",
|
||||
type = DbgModelTargetSessionContainerImpl.class,
|
||||
required = true,
|
||||
fixed = true), //
|
||||
@TargetAttributeType(type = Void.class) //
|
||||
})
|
||||
public class DbgModelTargetRootImpl extends DbgModelDefaultTargetModelRoot
|
||||
implements DbgModelTargetRoot {
|
||||
|
||||
|
@ -136,12 +151,6 @@ public class DbgModelTargetRootImpl extends DbgModelDefaultTargetModelRoot
|
|||
), reason.desc());
|
||||
}
|
||||
|
||||
//@Override
|
||||
public void refresh() {
|
||||
// TODO ???
|
||||
System.err.println("root:refresh");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TargetAccessibility getAccessibility() {
|
||||
return accessibility;
|
||||
|
|
|
@ -23,12 +23,18 @@ import agent.dbgeng.model.iface2.DbgModelTargetSession;
|
|||
import agent.dbgeng.model.iface2.DbgModelTargetSessionAttributes;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
||||
@TargetObjectSchemaInfo(name = "SessionAttributes", elements = { //
|
||||
@TargetElementType(type = Void.class) //
|
||||
}, attributes = { //
|
||||
@TargetAttributeType(name = "Machine", type = DbgModelTargetSessionAttributesMachineImpl.class, fixed = true), //
|
||||
@TargetAttributeType(type = Void.class) //
|
||||
})
|
||||
@TargetObjectSchemaInfo(
|
||||
name = "SessionAttributes",
|
||||
elements = { //
|
||||
@TargetElementType(type = Void.class) //
|
||||
},
|
||||
attributes = { //
|
||||
@TargetAttributeType(
|
||||
name = "Machine",
|
||||
type = DbgModelTargetSessionAttributesMachineImpl.class,
|
||||
fixed = true), //
|
||||
@TargetAttributeType(type = Void.class) //
|
||||
})
|
||||
public class DbgModelTargetSessionAttributesImpl extends DbgModelTargetObjectImpl
|
||||
implements DbgModelTargetSessionAttributes {
|
||||
|
||||
|
@ -75,8 +81,8 @@ public class DbgModelTargetSessionAttributesImpl extends DbgModelTargetObjectImp
|
|||
*/
|
||||
|
||||
@Override
|
||||
public void refresh() {
|
||||
machineAttributes.refresh();
|
||||
public void refreshInternal() {
|
||||
machineAttributes.refreshInternal();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -60,15 +60,15 @@ public class DbgModelTargetSessionAttributesMachineImpl extends DbgModelTargetOb
|
|||
|
||||
@Override
|
||||
public void sessionAdded(DbgSession session, DbgCause cause) {
|
||||
refresh();
|
||||
refreshInternal();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processAdded(DbgProcess process, DbgCause cause) {
|
||||
refresh();
|
||||
refreshInternal();
|
||||
}
|
||||
|
||||
public void refresh() {
|
||||
public void refreshInternal() {
|
||||
DebugControl control = getManager().getControl();
|
||||
int processorType = control.getActualProcessorType();
|
||||
if (processorType < 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue