/// <summary> /// Initializes a new instance of the <see cref="MonoDevelop.CodeIssues.JobStatus"/> class. /// </summary> /// <param name="job">The job.</param> public JobStatus (IAnalysisJob job) { if (job == null) throw new ArgumentNullException ("job"); this.job = job; }
public ProgressMonitorWrapperJob(IAnalysisJob wrappedJob, string message) { this.wrappedJob = wrappedJob; monitor = IdeApp.Workbench.ProgressMonitors.GetStatusProgressMonitor(message, null, false); var work = wrappedJob.GetFiles().Sum(f => wrappedJob.GetIssueProviders(f).Count()); monitor.BeginTask(message, work); }
/// <summary> /// Queues a code analysis job. /// </summary> /// <param name="job">The job to queue.</param> /// <param name="progressMessage"> /// The message used for a progress monitor, or null if no progress monitor should be used. /// </param> public static IJobContext QueueCodeIssueAnalysis(IAnalysisJob job, string progressMessage = null) { if (progressMessage != null) { job = new ProgressMonitorWrapperJob(job, progressMessage); } return(runner.QueueJob(job)); }
public ProgressMonitorWrapperJob (IAnalysisJob wrappedJob, string message) { this.wrappedJob = wrappedJob; monitor = IdeApp.Workbench.ProgressMonitors.GetStatusProgressMonitor (message, null, false); var work = wrappedJob.GetFiles ().Sum (f => wrappedJob.GetIssueProviders (f).Count ()); monitor.BeginTask (message, work); }
/// <summary> /// Initializes a new instance of the <see cref="MonoDevelop.CodeIssues.JobStatus"/> class. /// </summary> /// <param name="job">The job.</param> public JobStatus(IAnalysisJob job) { if (job == null) { throw new ArgumentNullException("job"); } this.job = job; }
/// <summary> /// Adds a job to be run on this file. /// </summary> /// <param name="job">The job.</param> /// <param name = "status">The status of the job.</param> public void AddJob(IAnalysisJob job, JobStatus status) { if (disposed) { throw new ObjectDisposedException(GetType().FullName); } statuses.Add(status); jobs.Add(job); }
public JobContext(IAnalysisJob job, AnalysisJobQueue queue, CodeAnalysisBatchRunner runner) { if (job == null) throw new ArgumentNullException ("job"); if (queue == null) throw new ArgumentNullException ("queue"); if (runner == null) throw new ArgumentNullException ("runner"); this.job = job; this.queue = queue; this.runner = runner; }
/// <summary> /// Removes the specified job. /// If the job is the last job in this instance it requests cancellation of it's CancellationToken. /// </summary> /// <param name="job">The job to remove.</param> public void RemoveJob(IAnalysisJob job) { if (disposed) { throw new ObjectDisposedException(GetType().FullName); } jobs.Remove(job); if (!jobs.Any()) { tokenSource.Cancel(); } }
/// <summary> /// Remove the specified job from the queue. /// </summary> /// <param name="job">The job to remove.</param> public void Remove (IAnalysisJob job) { lock (_lock) { foreach (var file in job.GetFiles()) { JobSlice queueItem = slices.FirstOrDefault (j => j.File == file); if (queueItem == null) // The file might have been processed already, carry on continue; queueItem.RemoveJob (job); if (!queueItem.GetJobs ().Any ()) slices.Remove (queueItem); } InvalidateSort (); } }
/// <summary> /// Adds the specified job to the queue. /// </summary> /// <param name="job">The job.</param> public void Add (IAnalysisJob job) { lock (_lock) { var jobStatus = new JobStatus (job); foreach (var file in job.GetFiles()) { JobSlice slice = slices.FirstOrDefault (j => j.File == file); if (slice == null) { slice = new JobSlice (file); slices.Add (slice); } jobStatus.AddSlice (slice); slice.AddJob (job, jobStatus); } InvalidateSort (); } }
/// <summary> /// Adds the specified job to the queue. /// </summary> /// <param name="job">The job.</param> public void Add(IAnalysisJob job) { lock (_lock) { var jobStatus = new JobStatus(job); foreach (var file in job.GetFiles()) { JobSlice slice = slices.FirstOrDefault(j => j.File == file); if (slice == null) { slice = new JobSlice(file); slices.Add(slice); } jobStatus.AddSlice(slice); slice.AddJob(job, jobStatus); } InvalidateSort(); } }
public JobContext(IAnalysisJob job, AnalysisJobQueue queue, CodeAnalysisBatchRunner runner) { if (job == null) { throw new ArgumentNullException("job"); } if (queue == null) { throw new ArgumentNullException("queue"); } if (runner == null) { throw new ArgumentNullException("runner"); } this.job = job; this.queue = queue; this.runner = runner; }
/// <summary> /// Remove the specified job from the queue. /// </summary> /// <param name="job">The job to remove.</param> public void Remove(IAnalysisJob job) { lock (_lock) { foreach (var file in job.GetFiles()) { JobSlice queueItem = slices.FirstOrDefault(j => j.File == file); if (queueItem == null) { // The file might have been processed already, carry on continue; } queueItem.RemoveJob(job); if (!queueItem.GetJobs().Any()) { slices.Remove(queueItem); } } InvalidateSort(); } }
/// <summary> /// Queues a code analysis job. /// </summary> /// <param name="job">The job to queue.</param> /// <param name="progressMessage"> /// The message used for a progress monitor, or null if no progress monitor should be used. /// </param> public static IJobContext QueueCodeIssueAnalysis(IAnalysisJob job, string progressMessage = null) { if (progressMessage != null) job = new ProgressMonitorWrapperJob (job, progressMessage); return runner.QueueJob (job); }
public IJobContext QueueJob(IAnalysisJob job) { jobQueue.Add(job); EnsureRunning(); return(new JobContext(job, jobQueue, this)); }
public IJobContext QueueJob (IAnalysisJob job) { jobQueue.Add (job); EnsureRunning (); return new JobContext (job, jobQueue, this); }