Beispiel #1
0
        public void Start()
        {
            lock (JobLock)
            {
                if (IsRunning)
                {
                    return;
                }

                IsRunning = true;

                m_cancelSource = new CancellationTokenSource();
                WorkManager.RunInThreadPool(ProcessRequests, null, Name, false);
                m_threadRunnig = true;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Queue the job for processing.
        /// </summary>
        /// <returns><c>true</c>, if job was queued, <c>false</c> otherwise.</returns>
        /// <param name="job">The job</param>
        /// </param>
        public bool QueueJob(Job job)
        {
            lock (JobLock)
            {
                if (!IsRunning)
                {
                    return(false);
                }

                if (!m_threadRunnig)
                {
                    WorkManager.RunInThreadPool(ProcessRequests, null, Name, false);
                    m_threadRunnig = true;
                }
            }

            if (m_jobQueue.Count < m_jobQueue.BoundedCapacity)
            {
                m_jobQueue.Add(job);

                if (!m_warnOverMaxQueue)
                {
                    m_warnOverMaxQueue = true;
                }

                return(true);
            }
            else
            {
                if (m_warnOverMaxQueue)
                {
                    m_log.WarnFormat(
                        "[{0}]: Job queue at maximum capacity, not recording job from {1} in {2}",
                        LoggingName, job.Name, Name);

                    m_warnOverMaxQueue = false;
                }
                return(false);
            }
        }