public virtual int GetNumJobsToAcquire(string processEngine)
 {
     if (JobsToAcquire.ContainsKey(processEngine))
     {
         return(JobsToAcquire[processEngine]);
     }
     return(BaseNumJobsToAcquire);
 }
        protected internal virtual void ReconfigureNumberOfJobsToAcquire(JobAcquisitionContext context)
        {
            // calculate the number of jobs to acquire next time
            JobsToAcquire.Clear();
            foreach (var acquiredJobsEntry in context.AcquiredJobsByEngine)
            {
                var engineName = acquiredJobsEntry.Key;

                var numJobsToAcquire            = (int)(BaseNumJobsToAcquire * Math.Pow(BackoffIncreaseFactor, BackoffLevel));
                var rejectedJobBatchesForEngine = context.RejectedJobBatchesByEngine.GetValueOrNull(engineName);
                if (rejectedJobBatchesForEngine != null)
                {
                    numJobsToAcquire -= rejectedJobBatchesForEngine.Count;
                }
                numJobsToAcquire = Math.Max(0, numJobsToAcquire);

                JobsToAcquire[engineName] = numJobsToAcquire;
            }
        }