Autopsy  4.4
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

Classes

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

Public Member Functions

void addIngestJobEventListener (final PropertyChangeListener listener)
 
void addIngestModuleEventListener (final PropertyChangeListener listener)
 
IngestJobStartResult beginIngestJob (Collection< Content > dataSources, IngestJobSettings settings)
 
void cancelAllIngestJobs (IngestJob.CancellationReason reason)
 
void cancelAllIngestJobs ()
 
int getNumberOfFileIngestThreads ()
 
boolean isIngestRunning ()
 
void queueIngestJob (Collection< Content > dataSources, IngestJobSettings settings)
 
void removeIngestJobEventListener (final PropertyChangeListener listener)
 
void removeIngestModuleEventListener (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 incrementModuleRunTime (String moduleDisplayName, Long duration)
 
IngestJobStartResult startIngestJob (IngestJob job)
 
void subscribeToCaseEvents ()
 
void subscribeToServiceMonitorEvents ()
 

Private Attributes

volatile boolean caseIsOpen
 
final ExecutorService dataSourceLevelIngestJobTasksExecutor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("IM-data-source-ingest-%d").build())
 
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 ConcurrentHashMap<>()
 
volatile IngestMessageTopComponent ingestMessageBox
 
final Object ingestMessageBoxLock = new Object()
 
final ConcurrentHashMap< String, Long > ingestModuleRunTimes = new ConcurrentHashMap<>()
 
final IngestMonitor ingestMonitor = new IngestMonitor()
 
final ConcurrentHashMap< Long, IngestThreadActivitySnapshot > ingestThreadActivitySnapshots = 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 107 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)
void org.sleuthkit.autopsy.ingest.IngestManager.addIngestModuleEventListener ( final PropertyChangeListener  listener)
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 1110 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 
)

Immdiately starts an ingest job for one or more data sources.

Parameters
dataSourcesThe data sources to process.
settingsThe settings for the ingest job.
Returns
The IngestJobStartResult describing the results of attempting to start the ingest job.

Definition at line 321 of file IngestManager.java.

References org.sleuthkit.autopsy.ingest.IngestManager.caseIsOpen, org.sleuthkit.autopsy.core.RuntimeProperties.runningWithGUI, and org.sleuthkit.autopsy.ingest.IngestManager.startIngestJob().

Referenced by 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
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 142 of file IngestManager.java.

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

Referenced by org.sleuthkit.autopsy.ingest.runIngestModuleWizard.RunIngestModulesAction.actionPerformed(), org.sleuthkit.autopsy.ingest.IngestMonitor.MonitorTimerAction.actionPerformed(), org.sleuthkit.autopsy.ingest.IngestOptionsPanel.addIngestJobEventsListener(), org.sleuthkit.autopsy.datamodel.Tags.TagNameNodeFactory.addNotify(), org.sleuthkit.autopsy.datamodel.InterestingHits.SetNameFactory.addNotify(), org.sleuthkit.autopsy.datamodel.ExtractedContent.TypeFactory.addNotify(), org.sleuthkit.autopsy.datamodel.HashsetHits.HashsetNameFactory.addNotify(), org.sleuthkit.autopsy.datamodel.EmailExtracted.AccountFactory.addNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.AccountsRootNode.AccountTypeFactory.addNotify(), org.sleuthkit.autopsy.datamodel.KeywordHits.ListFactory.addNotify(), org.sleuthkit.autopsy.datamodel.ExtractedContent.ArtifactFactory.addNotify(), org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettingsPanel.cancel(), org.sleuthkit.autopsy.actions.IngestRunningCheck.checkAndConfirmProceed(), org.sleuthkit.autopsy.casemodule.Case.close(), org.sleuthkit.autopsy.casemodule.IngestJobInfoPanel.customizeComponents(), org.sleuthkit.autopsy.ingest.IngestOptionsPanel.enableTabs(), org.sleuthkit.autopsy.datamodel.FileTypesByExtension.FileTypesByExtObservable.FileTypesByExtObservable(), org.sleuthkit.autopsy.ingest.IngestServices.fireModuleContentEvent(), org.sleuthkit.autopsy.ingest.IngestServices.fireModuleDataEvent(), org.sleuthkit.autopsy.modules.fileextmismatch.FileExtMismatchContextMenuActionsProvider.getActions(), org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettingsPanel.HashLookupSettingsPanel(), org.sleuthkit.autopsy.datamodel.ImageNode.ImageNode(), org.sleuthkit.autopsy.timeline.TimeLineController.rebuildRepoHelper(), org.sleuthkit.autopsy.ingest.IngestProgressSnapshotPanel.IngestThreadActivitySnapshotsTableModel.refresh(), org.sleuthkit.autopsy.ingest.IngestProgressSnapshotPanel.IngestJobTableModel.refresh(), org.sleuthkit.autopsy.ingest.IngestProgressSnapshotPanel.ModuleTableModel.refresh(), org.sleuthkit.autopsy.modules.hashdatabase.HashDbManager.removeHashDatabaseNoSave(), org.sleuthkit.autopsy.datamodel.FileTypesByMimeType.removeListeners(), org.sleuthkit.autopsy.datamodel.AbstractAbstractFileNode< VirtualDirectory >.removeListeners(), org.sleuthkit.autopsy.datamodel.VolumeNode.removeListeners(), org.sleuthkit.autopsy.datamodel.FileTypesByExtension.FileTypesByExtObservable.removeListeners(), org.sleuthkit.autopsy.datamodel.ImageNode.removeListeners(), org.sleuthkit.autopsy.datamodel.FileSize.FileSizeRootChildren.FileSizeRootChildrenObservable.removeListeners(), org.sleuthkit.autopsy.datamodel.DeletedContent.DeletedContentsChildren.DeletedContentsChildrenObservable.removeListeners(), org.sleuthkit.autopsy.datamodel.Tags.TagNameNodeFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.InterestingHits.SetNameFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.ExtractedContent.TypeFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.HashsetHits.HashsetNameFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.EmailExtracted.AccountFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.AccountsRootNode.AccountTypeFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.KeywordHits.ListFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.ExtractedContent.ArtifactFactory.removeNotify(), org.sleuthkit.autopsy.ingest.Installer.restored(), org.sleuthkit.autopsy.timeline.TimeLineController.shutDownTimeLine(), org.sleuthkit.autopsy.ingest.IngestJobConfigurator.startIngestJobs(), org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent.subscribeToChangeEvents(), org.sleuthkit.autopsy.testing.AutopsyTestCases.testIngest(), org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettingsPanel.updateComponentsForNoSelection(), org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettingsPanel.updateComponentsForSelection(), org.sleuthkit.autopsy.datamodel.VolumeNode.VolumeNode(), and org.sleuthkit.autopsy.timeline.snapshot.SnapShotReportWriter.writeSummaryHTML().

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 291 of file IngestManager.java.

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

void org.sleuthkit.autopsy.ingest.IngestManager.incrementModuleRunTime ( String  moduleDisplayName,
Long  duration 
)
private

Updates the cumulative run time for a given ingest module.

Parameters
moduleDisplayNameThe diplay name of the ingest module.
duration

Definition at line 702 of file IngestManager.java.

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

boolean org.sleuthkit.autopsy.ingest.IngestManager.isIngestRunning ( )
void org.sleuthkit.autopsy.ingest.IngestManager.queueIngestJob ( Collection< Content >  dataSources,
IngestJobSettings  settings 
)
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 463 of file IngestManager.java.

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

Referenced by 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.datamodel.Tags.TagNameNodeFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.InterestingHits.SetNameFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.ExtractedContent.TypeFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.HashsetHits.HashsetNameFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.EmailExtracted.AccountFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.AccountsRootNode.AccountTypeFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.KeywordHits.ListFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.ExtractedContent.ArtifactFactory.removeNotify(), org.sleuthkit.autopsy.ingest.IngestManager.removePropertyChangeListener(), and org.sleuthkit.autopsy.timeline.TimeLineController.shutDownTimeLine().

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 481 of file IngestManager.java.

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

Referenced by org.sleuthkit.autopsy.datamodel.AbstractAbstractFileNode< VirtualDirectory >.removeListeners(), org.sleuthkit.autopsy.datamodel.VolumeNode.removeListeners(), org.sleuthkit.autopsy.datamodel.FileTypesByExtension.FileTypesByExtObservable.removeListeners(), org.sleuthkit.autopsy.datamodel.ImageNode.removeListeners(), org.sleuthkit.autopsy.datamodel.FileSize.FileSizeRootChildren.FileSizeRootChildrenObservable.removeListeners(), org.sleuthkit.autopsy.datamodel.DeletedContent.DeletedContentsChildren.DeletedContentsChildrenObservable.removeListeners(), org.sleuthkit.autopsy.datamodel.Tags.TagNameNodeFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.InterestingHits.SetNameFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.ExtractedContent.TypeFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.HashsetHits.HashsetNameFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.EmailExtracted.AccountFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.accounts.Accounts.AccountsRootNode.AccountTypeFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.KeywordHits.ListFactory.removeNotify(), org.sleuthkit.autopsy.datamodel.ExtractedContent.ArtifactFactory.removeNotify(), org.sleuthkit.autopsy.ingest.IngestManager.removePropertyChangeListener(), and org.sleuthkit.autopsy.timeline.TimeLineController.shutDownTimeLine().

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 1124 of file IngestManager.java.

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

IngestJobStartResult org.sleuthkit.autopsy.ingest.IngestManager.startIngestJob ( IngestJob  job)
private
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 1140 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 231 of file IngestManager.java.

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

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

Member Data Documentation

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

Definition at line 124 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 110 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 111 of file IngestManager.java.

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

Definition at line 112 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 113 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 ConcurrentHashMap<>()
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
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
final int org.sleuthkit.autopsy.ingest.IngestManager.MAX_ERROR_MESSAGE_POSTS = 200
staticprivate

Definition at line 114 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-2016 Basis Technology. Generated on: Tue Jun 13 2017
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.