Autopsy  4.19.3
Graphical digital forensics platform for The Sleuth Kit and other tools.
Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
org.sleuthkit.autopsy.ingest.IngestManager Class Reference

Inherits org.sleuthkit.autopsy.ingest.IngestProgressSnapshotProvider.

Classes

class  ExecuteIngestJobTasksTask
 
enum  IngestJobEvent
 
class  IngestManagerException
 
enum  IngestModuleEvent
 
class  IngestThreadActivitySnapshot
 
class  PublishEventTask
 
class  StartIngestJobTask
 

Public Member Functions

void addIngestJobEventListener (final PropertyChangeListener listener)
 
void addIngestJobEventListener (Set< IngestJobEvent > eventTypes, final PropertyChangeListener listener)
 
void addIngestModuleEventListener (final PropertyChangeListener listener)
 
void addIngestModuleEventListener (Set< IngestModuleEvent > eventTypes, final PropertyChangeListener listener)
 
IngestJobStartResult beginIngestJob (Collection< Content > dataSources, IngestJobSettings settings)
 
void cancelAllIngestJobs (IngestJob.CancellationReason reason)
 
void cancelAllIngestJobs ()
 
List< IngestJobProgressSnapshotgetIngestJobSnapshots ()
 
List< IngestThreadActivitySnapshotgetIngestThreadActivitySnapshots ()
 
Map< String, Long > getModuleRunTimes ()
 
int getNumberOfFileIngestThreads ()
 
boolean isIngestRunning ()
 
IngestStream openIngestStream (DataSource dataSource, IngestJobSettings settings) throws TskCoreException
 
void queueIngestJob (Collection< Content > dataSources, IngestJobSettings settings)
 
void queueIngestJob (Content dataSource, List< AbstractFile > files, IngestJobSettings settings)
 
void removeIngestJobEventListener (final PropertyChangeListener listener)
 
void removeIngestJobEventListener (Set< IngestJobEvent > eventTypes, final PropertyChangeListener listener)
 
void removeIngestModuleEventListener (final PropertyChangeListener listener)
 
void removeIngestModuleEventListener (Set< IngestModuleEvent > eventTypes, final PropertyChangeListener listener)
 
synchronized IngestJob startIngestJob (Collection< Content > dataSources, IngestJobSettings settings)
 

Static Public Member Functions

static void addPropertyChangeListener (final PropertyChangeListener listener)
 
static synchronized IngestManager getInstance ()
 
static void removePropertyChangeListener (final PropertyChangeListener listener)
 

Private Member Functions

 IngestManager ()
 
void clearIngestMessageBox ()
 
void subscribeToCaseEvents ()
 
void subscribeToServiceMonitorEvents ()
 

Private Attributes

final ExecutorService analysisResultIngestTasksExecutor
 
volatile boolean caseIsOpen
 
final ExecutorService dataArtifactIngestTasksExecutor
 
final ExecutorService dataSourceLevelIngestJobTasksExecutor
 
final ExecutorService eventPublishingExecutor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("IM-ingest-events-%d").build())
 
final ExecutorService fileLevelIngestJobTasksExecutor
 
final AtomicLong ingestErrorMessagePosts = new AtomicLong(0L)
 
final Map< Long, IngestJobingestJobsById = new HashMap<>()
 
volatile IngestMessageTopComponent ingestMessageBox
 
final Object ingestMessageBoxLock = new Object()
 
final ConcurrentHashMap< String, Long > ingestModuleRunTimes = new ConcurrentHashMap<>()
 
final IngestMonitor ingestMonitor = new IngestMonitor()
 
final ConcurrentHashMap< Long, IngestThreadActivitySnapshotingestThreadActivitySnapshots = new ConcurrentHashMap<>()
 
final AutopsyEventPublisher jobEventPublisher = new AutopsyEventPublisher()
 
final AutopsyEventPublisher moduleEventPublisher = new AutopsyEventPublisher()
 
final AtomicLong nextIngestManagerTaskId = new AtomicLong(0L)
 
final int numberOfFileIngestThreads
 
final ServicesMonitor servicesMonitor = ServicesMonitor.getInstance()
 
final Map< Long, Future< Void > > startIngestJobFutures = new ConcurrentHashMap<>()
 
final ExecutorService startIngestJobsExecutor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("IM-start-ingest-jobs-%d").build())
 

Static Private Attributes

static final String INGEST_JOB_EVENT_CHANNEL_NAME = "%s-Ingest-Job-Events"
 
static final Set< String > INGEST_JOB_EVENT_NAMES = Stream.of(IngestJobEvent.values()).map(IngestJobEvent::toString).collect(Collectors.toSet())
 
static final String INGEST_MODULE_EVENT_CHANNEL_NAME = "%s-Ingest-Module-Events"
 
static final Set< String > INGEST_MODULE_EVENT_NAMES = Stream.of(IngestModuleEvent.values()).map(IngestModuleEvent::toString).collect(Collectors.toSet())
 
static IngestManager instance
 
static final Logger logger = Logger.getLogger(IngestManager.class.getName())
 
static final int MAX_ERROR_MESSAGE_POSTS = 200
 

Detailed Description

Manages the creation and execution of ingest jobs, i.e., the processing of data sources by ingest modules.

Every ingest job that is submitted to the ingest manager is passed to an ingest task scheduler to be broken down into data source level and file level ingest job tasks. The ingest job tasks that are put into queues for execution by the ingest manager's executors. The process of starting an ingest job is handled by a single-threaded executor, the processing of data source level ingest tasks is handled by another single-threaded executor, and the processing of file level ingest jobs is handled by an executor with a configurable number of threads.

The ingest manager publishes two kinds of application events: ingest job events and ingest module events. Ingest job events are published when an ingest job changes states, e.g., an ingest job is started or completed. Ingest module events are published on behalf of ingest modules working on an ingest job, when content or an artifact is added to the current case. Each of the two event types is handled by a separate event publisher with its own remote event channel, but all event publishing is handled by a dedicated, single-threaded executor.

The ingest manager uses an ingest monitor to determine when system resources are under pressure. If the ingest monitor detects such a situation, it calls back to the ingest manager to cancel all ingest jobs in progress.

The ingest manager uses a service monitor to watch for service outages. If a key services goes down, the ingest manager cancels all ingest jobs in progress.

The ingest manager provides access to a top component that is used as in "inbox" by ingest modules for the purpose of posting messages for the user. A count of the posts is used to enforce a cap on the number of messages posted, to avoid bogging down the application.

The ingest manager supports reporting of ingest processing progress by collecting snapshots of the activities of the ingest threads, overall ingest job progress, and ingest module run times.

Definition at line 121 of file IngestManager.java.

Constructor & Destructor Documentation

org.sleuthkit.autopsy.ingest.IngestManager.IngestManager ( )
private

Member Function Documentation

void org.sleuthkit.autopsy.ingest.IngestManager.addIngestJobEventListener ( final PropertyChangeListener  listener)

Adds an ingest job event property change listener.

Parameters
listenerThe PropertyChangeListener to be added.

Definition at line 716 of file IngestManager.java.

References org.sleuthkit.autopsy.events.AutopsyEventPublisher.addSubscriber(), and org.sleuthkit.autopsy.ingest.IngestManager.jobEventPublisher.

Referenced by org.sleuthkit.autopsy.ingest.IngestOptionsPanel.addIngestJobEventsListener(), org.sleuthkit.autopsy.centralrepository.optionspanel.GlobalSettingsPanel.addIngestJobEventsListener(), org.sleuthkit.autopsy.datamodel.Tags.TagNameNodeFactory.addNotify(), org.sleuthkit.autopsy.communications.FiltersPanel.addNotify(), org.sleuthkit.autopsy.datamodel.InterestingHits.SetNameFactory.addNotify(), org.sleuthkit.autopsy.datamodel.HashsetHits.HashsetNameFactory.addNotify(), org.sleuthkit.autopsy.datamodel.EmailExtracted.AccountFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.AccountTypeFactory.addNotify(), org.sleuthkit.autopsy.datamodel.KeywordHits.ListFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.DefaultAccountFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.ViewModeFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.FileWithCCNFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.BINFactory.addNotify(), org.sleuthkit.autopsy.ingest.IngestManager.addPropertyChangeListener(), org.sleuthkit.autopsy.commandlineingest.CommandLineIngestManager.JobProcessingTask.analyze(), org.sleuthkit.autopsy.casemodule.IngestJobInfoPanel.customizeComponents(), org.sleuthkit.autopsy.keywordsearch.DropdownSingleTermSearchPanel.customizeComponents(), org.sleuthkit.autopsy.modules.interestingitems.FilesSetDefsPanel.FilesSetDefsPanel(), org.sleuthkit.autopsy.datamodel.FileTypesByExtension.FileTypesByExtObservable.FileTypesByExtObservable(), org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettingsPanel.HashLookupSettingsPanel(), org.sleuthkit.autopsy.datamodel.Artifacts.ArtifactFactory.onAdd(), org.sleuthkit.autopsy.datasourcesummary.uiutils.EventUpdateHandler.register(), org.sleuthkit.autopsy.testutils.IngestJobRunner.runIngestJob(), org.sleuthkit.autopsy.datasourcesummary.uiutils.IngestRunningLabel.setupListener(), and org.sleuthkit.autopsy.url.analytics.domaincategorization.WebCategoriesOptionsPanel.WebCategoriesOptionsPanel().

void org.sleuthkit.autopsy.ingest.IngestManager.addIngestJobEventListener ( Set< IngestJobEvent eventTypes,
final PropertyChangeListener  listener 
)

Adds an ingest job event property change listener for the given event types.

Parameters
eventTypesThe event types to listen for
listenerThe PropertyChangeListener to be added

Definition at line 727 of file IngestManager.java.

References org.sleuthkit.autopsy.events.AutopsyEventPublisher.addSubscriber(), and org.sleuthkit.autopsy.ingest.IngestManager.jobEventPublisher.

void org.sleuthkit.autopsy.ingest.IngestManager.addIngestModuleEventListener ( final PropertyChangeListener  listener)

Adds an ingest module event property change listener.

Parameters
listenerThe PropertyChangeListener to be added.

Definition at line 759 of file IngestManager.java.

References org.sleuthkit.autopsy.events.AutopsyEventPublisher.addSubscriber(), and org.sleuthkit.autopsy.ingest.IngestManager.moduleEventPublisher.

Referenced by org.sleuthkit.autopsy.geolocation.GeolocationTopComponent.addNotify(), org.sleuthkit.autopsy.communications.FiltersPanel.addNotify(), org.sleuthkit.autopsy.datamodel.InterestingHits.SetNameFactory.addNotify(), org.sleuthkit.autopsy.datamodel.HashsetHits.HashsetNameFactory.addNotify(), org.sleuthkit.autopsy.datamodel.EmailExtracted.AccountFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.AccountTypeFactory.addNotify(), org.sleuthkit.autopsy.datamodel.KeywordHits.ListFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.DefaultAccountFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.ViewModeFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.FileWithCCNFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.BINFactory.addNotify(), org.sleuthkit.autopsy.ingest.IngestManager.addPropertyChangeListener(), org.sleuthkit.autopsy.communications.ContactCache.ContactCache(), org.sleuthkit.autopsy.guiutils.ContactCache.ContactCache(), org.sleuthkit.autopsy.datamodel.ImageNode.ImageNode(), org.sleuthkit.autopsy.guiutils.RefreshThrottler.registerForIngestModuleEvents(), org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.registerListeners(), org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.unregisterListeners(), and org.sleuthkit.autopsy.datamodel.VolumeNode.VolumeNode().

void org.sleuthkit.autopsy.ingest.IngestManager.addIngestModuleEventListener ( Set< IngestModuleEvent eventTypes,
final PropertyChangeListener  listener 
)

Adds an ingest module event property change listener for given event types.

Parameters
eventTypesThe event types to listen for
listenerThe PropertyChangeListener to be removed.

Definition at line 770 of file IngestManager.java.

References org.sleuthkit.autopsy.events.AutopsyEventPublisher.addSubscriber(), and org.sleuthkit.autopsy.ingest.IngestManager.moduleEventPublisher.

static void org.sleuthkit.autopsy.ingest.IngestManager.addPropertyChangeListener ( final PropertyChangeListener  listener)
static

Adds an ingest job and ingest module event property change listener.

Parameters
listenerThe PropertyChangeListener to register.
Deprecated:
Use addIngestJobEventListener() and/or addIngestModuleEventListener().

Definition at line 1399 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.addIngestJobEventListener(), org.sleuthkit.autopsy.ingest.IngestManager.addIngestModuleEventListener(), and org.sleuthkit.autopsy.ingest.IngestManager.instance.

IngestJobStartResult org.sleuthkit.autopsy.ingest.IngestManager.beginIngestJob ( Collection< Content >  dataSources,
IngestJobSettings  settings 
)

Immediately starts batch mode ingest jobs for one or more data sources. If any of the jobs fail to start, any jobs already started are cancelled and any remaining jobs are not attempted. The idea behind this is that since all of the jobs have the same settings, if the ingest modules fail to start up for one job (presumably the first job), all of the jobs will encounter problems.

Parameters
dataSourcesThe data sources to process.
settingsThe settings for the ingest jobs.
Returns
An IngestJobStartResult object describing the results of attempting to start the ingest jobs.

Definition at line 524 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.caseIsOpen, org.sleuthkit.autopsy.ingest.IngestJobStartResult.getModuleErrors(), org.sleuthkit.autopsy.ingest.IngestJobStartResult.getStartupException(), and org.sleuthkit.autopsy.ingest.IngestJob.CancellationReason.INGEST_MODULES_STARTUP_FAILED.

Referenced by org.sleuthkit.autopsy.commandlineingest.CommandLineIngestManager.JobProcessingTask.analyze(), and org.sleuthkit.autopsy.ingest.IngestManager.startIngestJob().

void org.sleuthkit.autopsy.ingest.IngestManager.cancelAllIngestJobs ( IngestJob.CancellationReason  reason)
void org.sleuthkit.autopsy.ingest.IngestManager.cancelAllIngestJobs ( )
void org.sleuthkit.autopsy.ingest.IngestManager.clearIngestMessageBox ( )
private
List<IngestJobProgressSnapshot> org.sleuthkit.autopsy.ingest.IngestManager.getIngestJobSnapshots ( )

Gets snapshots of the state of all running ingest jobs.

Returns
A list of ingest job state snapshots.

Implements org.sleuthkit.autopsy.ingest.IngestProgressSnapshotProvider.

Definition at line 1019 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.ingestJobsById.

List<IngestThreadActivitySnapshot> org.sleuthkit.autopsy.ingest.IngestManager.getIngestThreadActivitySnapshots ( )

Gets snapshots of the current state of each ingest manager ingest task (ingest thread).

Returns
A collection of ingest manager ingest task snapshots.

Implements org.sleuthkit.autopsy.ingest.IngestProgressSnapshotProvider.

Definition at line 1009 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.ingestThreadActivitySnapshots.

static synchronized IngestManager org.sleuthkit.autopsy.ingest.IngestManager.getInstance ( )
static

Gets the manager of the creation and execution of ingest jobs, i.e., the processing of data sources by ingest modules.

Returns
A singleton ingest manager object.

Definition at line 160 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.IngestManager(), and org.sleuthkit.autopsy.ingest.IngestManager.instance.

Referenced by org.sleuthkit.autopsy.casemodule.DeleteDataSourceAction.actionPerformed(), org.sleuthkit.autopsy.ingest.runIngestModuleWizard.RunIngestModulesAction.actionPerformed(), org.sleuthkit.autopsy.ingest.IngestMonitor.MonitorTimerAction.actionPerformed(), org.sleuthkit.autopsy.ingest.IngestOptionsPanel.addIngestJobEventsListener(), org.sleuthkit.autopsy.centralrepository.optionspanel.GlobalSettingsPanel.addIngestJobEventsListener(), org.sleuthkit.autopsy.geolocation.GeolocationTopComponent.addNotify(), org.sleuthkit.autopsy.datamodel.Tags.TagNameNodeFactory.addNotify(), org.sleuthkit.autopsy.communications.FiltersPanel.addNotify(), org.sleuthkit.autopsy.datamodel.InterestingHits.SetNameFactory.addNotify(), org.sleuthkit.autopsy.datamodel.HashsetHits.HashsetNameFactory.addNotify(), org.sleuthkit.autopsy.datamodel.EmailExtracted.AccountFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.AccountTypeFactory.addNotify(), org.sleuthkit.autopsy.datamodel.KeywordHits.ListFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.DefaultAccountFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.ViewModeFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.FileWithCCNFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.BINFactory.addNotify(), org.sleuthkit.autopsy.commandlineingest.CommandLineIngestManager.JobProcessingTask.analyze(), org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettingsPanel.cancel(), org.sleuthkit.autopsy.actions.IngestRunningCheck.checkAndConfirmProceed(), org.sleuthkit.autopsy.url.analytics.domaincategorization.WebCategoriesOptionsPanel.close(), org.sleuthkit.autopsy.casemodule.Case.close(), org.sleuthkit.autopsy.communications.ContactCache.ContactCache(), org.sleuthkit.autopsy.guiutils.ContactCache.ContactCache(), org.sleuthkit.autopsy.casemodule.IngestJobInfoPanel.customizeComponents(), org.sleuthkit.autopsy.keywordsearch.DropdownSingleTermSearchPanel.customizeComponents(), org.sleuthkit.autopsy.centralrepository.optionspanel.GlobalSettingsPanel.enableButtonSubComponents(), org.sleuthkit.autopsy.centralrepository.optionspanel.GlobalSettingsPanel.enableDatabaseConfigureButton(), org.sleuthkit.autopsy.ingest.IngestOptionsPanel.enableTabs(), org.sleuthkit.autopsy.modules.interestingitems.FilesSetDefsPanel.FilesSetDefsPanel(), org.sleuthkit.autopsy.datamodel.FileTypesByExtension.FileTypesByExtObservable.FileTypesByExtObservable(), org.sleuthkit.autopsy.datamodel.Tags.TagNameNodeFactory.finalize(), org.sleuthkit.autopsy.datamodel.InterestingHits.SetNameFactory.finalize(), org.sleuthkit.autopsy.datamodel.HashsetHits.HashsetNameFactory.finalize(), org.sleuthkit.autopsy.datamodel.EmailExtracted.AccountFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.AccountTypeFactory.finalize(), org.sleuthkit.autopsy.datamodel.KeywordHits.ListFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.DefaultAccountFactory.finalize(), org.sleuthkit.autopsy.centralrepository.optionspanel.GlobalSettingsPanel.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.ViewModeFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.FileWithCCNFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.BINFactory.finalize(), org.sleuthkit.autopsy.ingest.IngestServices.fireModuleContentEvent(), org.sleuthkit.autopsy.keywordsearch.ExtractAllTermsReport.generateReport(), org.sleuthkit.autopsy.modules.fileextmismatch.FileExtMismatchContextMenuActionsProvider.getActions(), org.sleuthkit.autopsy.ingest.IngestServices.getFreeDiskSpace(), org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettingsPanel.HashLookupSettingsPanel(), org.sleuthkit.autopsy.datamodel.ImageNode.ImageNode(), org.sleuthkit.autopsy.keywordsearch.SolrSearchService.index(), org.sleuthkit.autopsy.ingest.IngestProgressSnapshotDialog.IngestProgressSnapshotDialog(), org.sleuthkit.autopsy.centralrepository.optionspanel.GlobalSettingsPanel.ingestStateUpdated(), org.sleuthkit.autopsy.datamodel.Artifacts.ArtifactFactory.onAdd(), org.sleuthkit.autopsy.datamodel.Artifacts.ArtifactFactory.onRemove(), org.sleuthkit.autopsy.ingest.IngestServices.postMessage(), org.sleuthkit.autopsy.casemodule.ImageDSProcessor.processWithIngestStream(), org.sleuthkit.autopsy.url.analytics.domaincategorization.WebCategoriesOptionsPanel.refreshComponentStates(), org.sleuthkit.autopsy.datasourcesummary.uiutils.IngestRunningLabel.refreshState(), org.sleuthkit.autopsy.datasourcesummary.uiutils.EventUpdateHandler.register(), org.sleuthkit.autopsy.guiutils.RefreshThrottler.registerForIngestModuleEvents(), org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.registerListeners(), org.sleuthkit.autopsy.modules.hashdatabase.HashDbManager.removeHashDatabaseNoSave(), org.sleuthkit.autopsy.datasourcesummary.uiutils.IngestRunningLabel.removeListener(), org.sleuthkit.autopsy.datamodel.ImageNode.removeListeners(), org.sleuthkit.autopsy.datamodel.VolumeNode.removeListeners(), org.sleuthkit.autopsy.datamodel.FileTypesByMimeType.removeListeners(), org.sleuthkit.autopsy.datamodel.FileTypesByExtension.FileTypesByExtObservable.removeListeners(), org.sleuthkit.autopsy.datamodel.AbstractAbstractFileNode< SpecialDirectory >.removeListeners(), org.sleuthkit.autopsy.datamodel.FileSize.FileSizeRootChildren.FileSizeRootChildrenObservable.removeListeners(), org.sleuthkit.autopsy.datamodel.DeletedContent.DeletedContentsChildren.DeletedContentsChildrenObservable.removeListeners(), org.sleuthkit.autopsy.geolocation.GeolocationTopComponent.removeNotify(), org.sleuthkit.autopsy.communications.FiltersPanel.removeNotify(), org.sleuthkit.autopsy.ingest.Installer.restored(), org.sleuthkit.autopsy.testutils.IngestJobRunner.runIngestJob(), org.sleuthkit.autopsy.casemodule.ImageDSProcessor.runWithIngestStream(), org.sleuthkit.autopsy.datasourcesummary.uiutils.IngestRunningLabel.setupListener(), org.sleuthkit.autopsy.report.modules.kml.KMLReport.setupReportDocument(), org.sleuthkit.autopsy.testing.AutopsyTestCases.testIngest(), org.sleuthkit.autopsy.datasourcesummary.uiutils.EventUpdateHandler.unregister(), org.sleuthkit.autopsy.guiutils.RefreshThrottler.unregisterEventListener(), org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.unregisterListeners(), org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettingsPanel.updateComponentsForNoSelection(), org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettingsPanel.updateComponentsForSelection(), org.sleuthkit.autopsy.datamodel.VolumeNode.VolumeNode(), org.sleuthkit.autopsy.report.modules.caseuco.CaseUcoReportModule.warnIngest(), org.sleuthkit.autopsy.url.analytics.domaincategorization.WebCategoriesOptionsPanel.WebCategoriesOptionsPanel(), org.sleuthkit.autopsy.report.modules.html.HTMLReport.writeSummary(), and org.sleuthkit.autopsy.report.uisnapshot.UiSnapShotReportWriter.writeSummaryHTML().

Map<String, Long> org.sleuthkit.autopsy.ingest.IngestManager.getModuleRunTimes ( )

Gets the cumulative run times for the ingest module.

Returns
Map of module name to run time (in milliseconds)

Implements org.sleuthkit.autopsy.ingest.IngestProgressSnapshotProvider.

Definition at line 995 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.ingestModuleRunTimes.

int org.sleuthkit.autopsy.ingest.IngestManager.getNumberOfFileIngestThreads ( )

Gets the number of file ingest threads the ingest manager is using to do ingest jobs.

Returns
The number of file ingest threads.

Definition at line 466 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.numberOfFileIngestThreads.

boolean org.sleuthkit.autopsy.ingest.IngestManager.isIngestRunning ( )

Queries whether or not any ingest jobs are in progress at the time of the call.

Returns
True or false.

Definition at line 687 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.ingestJobsById.

Referenced by org.sleuthkit.autopsy.casemodule.DeleteDataSourceAction.actionPerformed(), org.sleuthkit.autopsy.ingest.IngestMonitor.MonitorTimerAction.actionPerformed(), org.sleuthkit.autopsy.commandlineingest.CommandLineIngestManager.JobProcessingTask.analyze(), org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettingsPanel.cancel(), org.sleuthkit.autopsy.actions.IngestRunningCheck.checkAndConfirmProceed(), org.sleuthkit.autopsy.keywordsearch.DropdownSingleTermSearchPanel.customizeComponents(), org.sleuthkit.autopsy.centralrepository.optionspanel.GlobalSettingsPanel.enableButtonSubComponents(), org.sleuthkit.autopsy.centralrepository.optionspanel.GlobalSettingsPanel.enableDatabaseConfigureButton(), org.sleuthkit.autopsy.ingest.IngestOptionsPanel.enableTabs(), org.sleuthkit.autopsy.modules.interestingitems.FilesSetDefsPanel.FilesSetDefsPanel(), org.sleuthkit.autopsy.keywordsearch.ExtractAllTermsReport.generateReport(), org.sleuthkit.autopsy.modules.fileextmismatch.FileExtMismatchContextMenuActionsProvider.getActions(), org.sleuthkit.autopsy.keywordsearch.SolrSearchService.index(), org.sleuthkit.autopsy.centralrepository.optionspanel.GlobalSettingsPanel.ingestStateUpdated(), org.sleuthkit.autopsy.url.analytics.domaincategorization.WebCategoriesOptionsPanel.refreshComponentStates(), org.sleuthkit.autopsy.datasourcesummary.uiutils.IngestRunningLabel.refreshState(), org.sleuthkit.autopsy.modules.hashdatabase.HashDbManager.removeHashDatabaseNoSave(), org.sleuthkit.autopsy.report.modules.kml.KMLReport.setupReportDocument(), org.sleuthkit.autopsy.ingest.IngestManager.subscribeToServiceMonitorEvents(), org.sleuthkit.autopsy.testing.AutopsyTestCases.testIngest(), org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettingsPanel.updateComponentsForNoSelection(), org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettingsPanel.updateComponentsForSelection(), org.sleuthkit.autopsy.report.modules.caseuco.CaseUcoReportModule.warnIngest(), org.sleuthkit.autopsy.report.modules.html.HTMLReport.writeSummary(), and org.sleuthkit.autopsy.report.uisnapshot.UiSnapShotReportWriter.writeSummaryHTML().

IngestStream org.sleuthkit.autopsy.ingest.IngestManager.openIngestStream ( DataSource  dataSource,
IngestJobSettings  settings 
) throws TskCoreException

Creates an ingest stream from the given ingest settings for a data source.

Parameters
dataSourceThe data source
settingsThe ingest job settings.
Returns
The newly created ingest stream.
Exceptions
TskCoreExceptionif there was an error starting the ingest job.

Definition at line 442 of file IngestManager.java.

Referenced by org.sleuthkit.autopsy.casemodule.ImageDSProcessor.processWithIngestStream(), and org.sleuthkit.autopsy.casemodule.ImageDSProcessor.runWithIngestStream().

void org.sleuthkit.autopsy.ingest.IngestManager.queueIngestJob ( Collection< Content >  dataSources,
IngestJobSettings  settings 
)

Queues batch mode ingest jobs for one or more data sources.

Parameters
dataSourcesThe data sources to analyze.
settingsThe settings for the ingest jobs.

Definition at line 476 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.caseIsOpen.

Referenced by org.sleuthkit.autopsy.ingest.runIngestModuleWizard.RunIngestModulesAction.actionPerformed().

void org.sleuthkit.autopsy.ingest.IngestManager.queueIngestJob ( Content  dataSource,
List< AbstractFile >  files,
IngestJobSettings  settings 
)

Queues a batch mode ingest job for a data source. Either all of the files in the data source or a given subset of the files will be analyzed.

Parameters
dataSourceThe data source to analyze.
filesA subset of the files for the data source. May be empty.
settingsThe settings for the ingest job.

Definition at line 494 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.caseIsOpen, org.sleuthkit.autopsy.ingest.IngestManager.nextIngestManagerTaskId, org.sleuthkit.autopsy.ingest.IngestManager.startIngestJobFutures, and org.sleuthkit.autopsy.ingest.IngestManager.startIngestJobsExecutor.

void org.sleuthkit.autopsy.ingest.IngestManager.removeIngestJobEventListener ( final PropertyChangeListener  listener)

Removes an ingest job event property change listener.

Parameters
listenerThe PropertyChangeListener to be removed.

Definition at line 738 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.jobEventPublisher, and org.sleuthkit.autopsy.events.AutopsyEventPublisher.removeSubscriber().

Referenced by org.sleuthkit.autopsy.commandlineingest.CommandLineIngestManager.JobProcessingTask.analyze(), org.sleuthkit.autopsy.url.analytics.domaincategorization.WebCategoriesOptionsPanel.close(), org.sleuthkit.autopsy.datamodel.Tags.TagNameNodeFactory.finalize(), org.sleuthkit.autopsy.datamodel.InterestingHits.SetNameFactory.finalize(), org.sleuthkit.autopsy.datamodel.HashsetHits.HashsetNameFactory.finalize(), org.sleuthkit.autopsy.datamodel.EmailExtracted.AccountFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.AccountTypeFactory.finalize(), org.sleuthkit.autopsy.datamodel.KeywordHits.ListFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.DefaultAccountFactory.finalize(), org.sleuthkit.autopsy.centralrepository.optionspanel.GlobalSettingsPanel.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.ViewModeFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.FileWithCCNFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.BINFactory.finalize(), org.sleuthkit.autopsy.datamodel.Artifacts.ArtifactFactory.onRemove(), org.sleuthkit.autopsy.datasourcesummary.uiutils.IngestRunningLabel.removeListener(), org.sleuthkit.autopsy.datamodel.FileTypesByMimeType.removeListeners(), org.sleuthkit.autopsy.datamodel.FileTypesByExtension.FileTypesByExtObservable.removeListeners(), org.sleuthkit.autopsy.datamodel.FileSize.FileSizeRootChildren.FileSizeRootChildrenObservable.removeListeners(), org.sleuthkit.autopsy.datamodel.DeletedContent.DeletedContentsChildren.DeletedContentsChildrenObservable.removeListeners(), org.sleuthkit.autopsy.communications.FiltersPanel.removeNotify(), org.sleuthkit.autopsy.ingest.IngestManager.removePropertyChangeListener(), and org.sleuthkit.autopsy.datasourcesummary.uiutils.EventUpdateHandler.unregister().

void org.sleuthkit.autopsy.ingest.IngestManager.removeIngestJobEventListener ( Set< IngestJobEvent eventTypes,
final PropertyChangeListener  listener 
)

Removes an ingest job event property change listener.

Parameters
eventTypesThe event types to stop listening for
listenerThe PropertyChangeListener to be removed.

Definition at line 748 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.jobEventPublisher, and org.sleuthkit.autopsy.events.AutopsyEventPublisher.removeSubscriber().

void org.sleuthkit.autopsy.ingest.IngestManager.removeIngestModuleEventListener ( final PropertyChangeListener  listener)

Removes an ingest module event property change listener.

Parameters
listenerThe PropertyChangeListener to be removed.

Definition at line 781 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.moduleEventPublisher, and org.sleuthkit.autopsy.events.AutopsyEventPublisher.removeSubscriber().

Referenced by org.sleuthkit.autopsy.datamodel.InterestingHits.SetNameFactory.finalize(), org.sleuthkit.autopsy.datamodel.HashsetHits.HashsetNameFactory.finalize(), org.sleuthkit.autopsy.datamodel.EmailExtracted.AccountFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.AccountTypeFactory.finalize(), org.sleuthkit.autopsy.datamodel.KeywordHits.ListFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.DefaultAccountFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.ViewModeFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.FileWithCCNFactory.finalize(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.BINFactory.finalize(), org.sleuthkit.autopsy.datamodel.ImageNode.removeListeners(), org.sleuthkit.autopsy.datamodel.VolumeNode.removeListeners(), org.sleuthkit.autopsy.datamodel.AbstractAbstractFileNode< SpecialDirectory >.removeListeners(), org.sleuthkit.autopsy.datamodel.FileSize.FileSizeRootChildren.FileSizeRootChildrenObservable.removeListeners(), org.sleuthkit.autopsy.datamodel.DeletedContent.DeletedContentsChildren.DeletedContentsChildrenObservable.removeListeners(), org.sleuthkit.autopsy.geolocation.GeolocationTopComponent.removeNotify(), org.sleuthkit.autopsy.communications.FiltersPanel.removeNotify(), org.sleuthkit.autopsy.ingest.IngestManager.removePropertyChangeListener(), and org.sleuthkit.autopsy.guiutils.RefreshThrottler.unregisterEventListener().

void org.sleuthkit.autopsy.ingest.IngestManager.removeIngestModuleEventListener ( Set< IngestModuleEvent eventTypes,
final PropertyChangeListener  listener 
)

Removes an ingest module event property change listener.

Parameters
eventTypesThe event types to stop listening for
listenerThe PropertyChangeListener to be removed.

Definition at line 791 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.moduleEventPublisher, and org.sleuthkit.autopsy.events.AutopsyEventPublisher.removeSubscriber().

static void org.sleuthkit.autopsy.ingest.IngestManager.removePropertyChangeListener ( final PropertyChangeListener  listener)
static

Removes an ingest job and ingest module event property change listener.

Parameters
listenerThe PropertyChangeListener to unregister.
Deprecated:
Use removeIngestJobEventListener() and/or removeIngestModuleEventListener().

Definition at line 1413 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.instance, org.sleuthkit.autopsy.ingest.IngestManager.removeIngestJobEventListener(), and org.sleuthkit.autopsy.ingest.IngestManager.removeIngestModuleEventListener().

synchronized IngestJob org.sleuthkit.autopsy.ingest.IngestManager.startIngestJob ( Collection< Content >  dataSources,
IngestJobSettings  settings 
)

Starts an ingest job that will process a collection of data sources.

Parameters
dataSourcesThe data sources to process.
settingsThe settings for the ingest job.
Returns
The ingest job that was started on success or null on failure.
Deprecated:
. Use beginIngestJob() instead.

Definition at line 1429 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.beginIngestJob(), and org.sleuthkit.autopsy.ingest.IngestJobStartResult.getJob().

void org.sleuthkit.autopsy.ingest.IngestManager.subscribeToCaseEvents ( )
private

Subscribes the ingest manager to current case (current case opened/closed) events.

Definition at line 250 of file IngestManager.java.

References org.sleuthkit.autopsy.casemodule.Case.addEventTypeSubscriber(), and org.sleuthkit.autopsy.casemodule.Case.Events.CURRENT_CASE.

void org.sleuthkit.autopsy.ingest.IngestManager.subscribeToServiceMonitorEvents ( )
private

Member Data Documentation

final ExecutorService org.sleuthkit.autopsy.ingest.IngestManager.analysisResultIngestTasksExecutor
private
volatile boolean org.sleuthkit.autopsy.ingest.IngestManager.caseIsOpen
private
final ExecutorService org.sleuthkit.autopsy.ingest.IngestManager.dataArtifactIngestTasksExecutor
private
final ExecutorService org.sleuthkit.autopsy.ingest.IngestManager.dataSourceLevelIngestJobTasksExecutor
private
final ExecutorService org.sleuthkit.autopsy.ingest.IngestManager.eventPublishingExecutor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("IM-ingest-events-%d").build())
private

Definition at line 142 of file IngestManager.java.

final ExecutorService org.sleuthkit.autopsy.ingest.IngestManager.fileLevelIngestJobTasksExecutor
private
final String org.sleuthkit.autopsy.ingest.IngestManager.INGEST_JOB_EVENT_CHANNEL_NAME = "%s-Ingest-Job-Events"
staticprivate

Definition at line 124 of file IngestManager.java.

final Set<String> org.sleuthkit.autopsy.ingest.IngestManager.INGEST_JOB_EVENT_NAMES = Stream.of(IngestJobEvent.values()).map(IngestJobEvent::toString).collect(Collectors.toSet())
staticprivate

Definition at line 125 of file IngestManager.java.

final String org.sleuthkit.autopsy.ingest.IngestManager.INGEST_MODULE_EVENT_CHANNEL_NAME = "%s-Ingest-Module-Events"
staticprivate

Definition at line 126 of file IngestManager.java.

final Set<String> org.sleuthkit.autopsy.ingest.IngestManager.INGEST_MODULE_EVENT_NAMES = Stream.of(IngestModuleEvent.values()).map(IngestModuleEvent::toString).collect(Collectors.toSet())
staticprivate

Definition at line 127 of file IngestManager.java.

final AtomicLong org.sleuthkit.autopsy.ingest.IngestManager.ingestErrorMessagePosts = new AtomicLong(0L)
private
final Map<Long, IngestJob> org.sleuthkit.autopsy.ingest.IngestManager.ingestJobsById = new HashMap<>()
private
volatile IngestMessageTopComponent org.sleuthkit.autopsy.ingest.IngestManager.ingestMessageBox
private
final Object org.sleuthkit.autopsy.ingest.IngestManager.ingestMessageBoxLock = new Object()
private
final ConcurrentHashMap<String, Long> org.sleuthkit.autopsy.ingest.IngestManager.ingestModuleRunTimes = new ConcurrentHashMap<>()
private
final IngestMonitor org.sleuthkit.autopsy.ingest.IngestManager.ingestMonitor = new IngestMonitor()
private

Definition at line 143 of file IngestManager.java.

final ConcurrentHashMap<Long, IngestThreadActivitySnapshot> org.sleuthkit.autopsy.ingest.IngestManager.ingestThreadActivitySnapshots = new ConcurrentHashMap<>()
private
IngestManager org.sleuthkit.autopsy.ingest.IngestManager.instance
staticprivate
final AutopsyEventPublisher org.sleuthkit.autopsy.ingest.IngestManager.jobEventPublisher = new AutopsyEventPublisher()
private
final Logger org.sleuthkit.autopsy.ingest.IngestManager.logger = Logger.getLogger(IngestManager.class.getName())
staticprivate

Definition at line 123 of file IngestManager.java.

final int org.sleuthkit.autopsy.ingest.IngestManager.MAX_ERROR_MESSAGE_POSTS = 200
staticprivate

Definition at line 128 of file IngestManager.java.

final AutopsyEventPublisher org.sleuthkit.autopsy.ingest.IngestManager.moduleEventPublisher = new AutopsyEventPublisher()
private
final AtomicLong org.sleuthkit.autopsy.ingest.IngestManager.nextIngestManagerTaskId = new AtomicLong(0L)
private
final int org.sleuthkit.autopsy.ingest.IngestManager.numberOfFileIngestThreads
private
final ServicesMonitor org.sleuthkit.autopsy.ingest.IngestManager.servicesMonitor = ServicesMonitor.getInstance()
private
final Map<Long, Future<Void> > org.sleuthkit.autopsy.ingest.IngestManager.startIngestJobFutures = new ConcurrentHashMap<>()
private
final ExecutorService org.sleuthkit.autopsy.ingest.IngestManager.startIngestJobsExecutor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("IM-start-ingest-jobs-%d").build())
private

The documentation for this class was generated from the following file:

Copyright © 2012-2022 Basis Technology. Generated on: Mon Oct 3 2022
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.