Esempio n. 1
0
		/// <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;
		}
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 /// <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);
		}
Esempio n. 5
0
        /// <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;
        }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
		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;
		}
Esempio n. 8
0
        /// <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 ();
			}
		}
Esempio n. 11
0
 /// <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();
     }
 }
Esempio n. 12
0
 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;
 }
Esempio n. 13
0
 /// <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();
     }
 }
Esempio n. 14
0
		/// <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);
		}