Package ghidra.trace.database.space

# Class AbstractDBTraceSpaceBasedManager<M extends DBTraceSpaceBased>

java.lang.Object
ghidra.trace.database.space.AbstractDBTraceSpaceBasedManager<M>

All Implemented Interfaces:
  `ErrorHandler`, `DBTraceManager`

Direct Known Subclasses:
  `DBTraceAddressSnapRangePropertyMap`, `DBTraceBookmarkManager`, `DBTraceCodeManager`, `DBTraceEquateManager`, `DBTraceMemoryManager`, `DBTraceReferenceManager`, `DBTraceRegisterContextManager`

public abstract class AbstractDBTraceSpaceBasedManager<M extends DBTraceSpaceBased> extends Object implements DBTraceManager

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `AbstractDBTraceSpaceBasedManager.DBTraceSpaceEntry`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final Language`
  `baseLanguage`
  `protected final DBHandle`
  `dbh`
  `protected final ReadWriteLock`
  `lock`
  `protected final String`
  `name`
  `protected static final AddressSpace`
  `NO_ADDRESS_SPACE`
  `protected final Map<TraceRegisterContainer,M>`
  `regSpacesByContainer`
  `protected final Map<AddressSpace,M>`
  `spaces`
  `protected final DBCachedObjectStore<AbstractDBTraceSpaceBasedManager.DBTraceSpaceEntry>`
  `spaceStore`
  `protected final Collection<M>`
  `spacesView`
  `protected final DBTraceThreadManager`
  `threadManager`
  `protected final DBTrace`
  `trace`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractDBTraceSpaceBasedManager(String name, DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected abstract M`
  `createSpace(AddressSpace space, AbstractDBTraceSpaceBasedManager.DBTraceSpaceEntry ent)`
  `void`
  `dbError(IOException e)`
  Notification that an IO exception occurred.
  `M`
  `get(AddressSpace space, boolean createIfAbsent)`
  `Collection<M>`
  `getActiveSpaces()`
  `Language`
  `getBaseLanguage()`
  `protected M`
  `getForRegisterSpace(TraceRegisterContainer container, boolean createIfAbsent)`
  `protected M`
  `getForRegisterSpace(TraceStackFrame frame, boolean createIfAbsent)`
  `protected M`
  `getForRegisterSpace(TraceThread thread, int frameLevel, boolean createIfAbsent)`
  `protected M`
  `getForSpace(AddressSpace space, boolean createIfAbsent)`
  `ReadWriteLock`
  `getLock()`
  `protected AddressSpace`
  `getSpaceByName(AddressFactory factory, String name)`
  `protected List<ghidra.trace.database.space.AbstractDBTraceSpaceBasedManager.TabledSpace>`
  `getTabledSpaces()`
  `DBTrace`
  `getTrace()`
  `void`
  `invalidateCache(boolean all)`
  Invalidate this manager's caches
  `protected void`
  `loadSpaces()`
  `protected String`
  `tableName(AddressSpace space)`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### NO_ADDRESS_SPACE

    protected static final AddressSpace NO_ADDRESS_SPACE

  - ### name

    protected final String name

  - ### dbh

    protected final DBHandle dbh

  - ### lock

    protected final ReadWriteLock lock

  - ### baseLanguage

    protected final Language baseLanguage

  - ### trace

    protected final DBTrace trace

  - ### threadManager

    protected final DBTraceThreadManager threadManager

  - ### spaceStore

    protected final DBCachedObjectStore<AbstractDBTraceSpaceBasedManager.DBTraceSpaceEntry> spaceStore

  - ### spaces

    protected final Map<AddressSpace,M extends DBTraceSpaceBased> spaces

  - ### regSpacesByContainer

    protected final Map<TraceRegisterContainer,M extends DBTraceSpaceBased> regSpacesByContainer

  - ### spacesView

    protected final Collection<M extends DBTraceSpaceBased> spacesView

- ## Constructor Details

  - ### AbstractDBTraceSpaceBasedManager

    public AbstractDBTraceSpaceBasedManager(String name, DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager) throws IOException, VersionException
    Throws:
      `IOException`
      `VersionException`

- ## Method Details

  - ### tableName

    protected String tableName(AddressSpace space)

  - ### loadSpaces

    protected void loadSpaces() throws VersionException, IOException
    Throws:
      `VersionException`
      `IOException`

  - ### getSpaceByName

    protected AddressSpace getSpaceByName(AddressFactory factory, String name)

  - ### getTabledSpaces

    protected List<ghidra.trace.database.space.AbstractDBTraceSpaceBasedManager.TabledSpace> getTabledSpaces()

  - ### getForSpace

    protected M getForSpace(AddressSpace space, boolean createIfAbsent)

  - ### getForRegisterSpace

    protected M getForRegisterSpace(TraceThread thread, int frameLevel, boolean createIfAbsent)

  - ### getForRegisterSpace

    protected M getForRegisterSpace(TraceStackFrame frame, boolean createIfAbsent)

  - ### getForRegisterSpace

    protected M getForRegisterSpace(TraceRegisterContainer container, boolean createIfAbsent)

  - ### getTrace

    public DBTrace getTrace()

  - ### getLock

    public ReadWriteLock getLock()

  - ### getBaseLanguage

    public Language getBaseLanguage()

  - ### get

    public M get(AddressSpace space, boolean createIfAbsent)

  - ### getActiveSpaces

    public Collection<M> getActiveSpaces()

  - ### createSpace

    protected abstract M createSpace(AddressSpace space, AbstractDBTraceSpaceBasedManager.DBTraceSpaceEntry ent) throws VersionException, IOException
    Throws:
      `VersionException`
      `IOException`

  - ### dbError

    public void dbError(IOException e)
    Description copied from interface: `ErrorHandler`
    Notification that an IO exception occurred.
    Specified by:
      `dbError` in interface `ErrorHandler`
    Parameters:
      `e` - `IOException` which was cause of error

  - ### invalidateCache

    public void invalidateCache(boolean all)
    Description copied from interface: `DBTraceManager`
    Invalidate this manager's caches
    Specified by:
      `invalidateCache` in interface `DBTraceManager`
    Parameters:
      `all` - probably nothing. Check out implementations of `ManagerDB.invalidateCache(boolean)`.