/// <summary>
        ///     Adds a job that has been sent to a client to the job maintenance engine.
        /// </summary>
        /// <param name="j"></param>
        /// <param name="request"></param>
        private void MaintainJobStatus(Job j, JobRequest request)
        {
            DateTime        dueDate = DateTime.Now + TimeSpan.FromSeconds(request.JobHandleTimeoutSeconds);
            JobTimeoutModel model   = new JobTimeoutModel(j.JobId, dueDate, request);

            JobMaintenanceHelper.AddJob(model);
        }
예제 #2
0
 /// <summary>
 ///     Adds a job to the queue.
 /// </summary>
 /// <param name="j"></param>
 public static void AddJob(JobTimeoutModel j)
 {
     lock (Queue) {
         Queue.Enqueue(j);
     }
     ResetEvent.Set();
 }
        public void TestContains()
        {
            PriorityLinkedList <JobTimeoutModel> pq = this.CreateSimpleQueue();

            Assert.True(pq.Contains(this.j1));
            Assert.True(pq.Contains(this.j2));
            Assert.True(pq.Contains(this.j3));
            JobTimeoutModel j4 = new JobTimeoutModel("abc", DateTime.Now + TimeSpan.FromMinutes(15), new JobRequest());

            Assert.False(pq.Contains(j4));
        }
        public void TestPeek()
        {
            PriorityLinkedList <JobTimeoutModel> pq = this.CreateSimpleQueue();
            JobTimeoutModel front = pq.Peek();

            Assert.Equal(this.j1, front);
            Assert.Equal(3, pq.Count);
            pq.Clear();
            front = pq.Peek();
            Assert.Null(front);
            Assert.Equal(0, pq.Count);
        }
        public void TestRemove3()
        {
            PriorityLinkedList <JobTimeoutModel> pq = this.CreateSimpleQueue();

            pq.Remove(this.j3);
            JobTimeoutModel d1 = pq.Dequeue();
            JobTimeoutModel d2 = pq.Dequeue();

            Assert.Equal(d1, this.j1);
            Assert.Equal(d2, this.j2);
            // queue should be empty now
            Assert.Null(pq.Dequeue());
        }
        public void TestDequeue()
        {
            PriorityLinkedList <JobTimeoutModel> pq = this.CreateSimpleQueue();
            JobTimeoutModel d1 = pq.Dequeue();

            Assert.Equal(2, pq.Count);
            JobTimeoutModel d2 = pq.Dequeue();

            Assert.Equal(1, pq.Count);
            JobTimeoutModel d3 = pq.Dequeue();

            Assert.Equal(0, pq.Count);
            Assert.Equal(this.j1, d1);
            Assert.Equal(this.j2, d2);
            Assert.Equal(this.j3, d3);
        }
예제 #7
0
 /// <summary>
 ///     Removes a job from the timeout system.
 /// </summary>
 /// <param name="j"></param>
 public static void Remove(JobTimeoutModel j)
 {
     lock (Queue) {
         Queue.Remove(j);
     }
 }
예제 #8
0
 /// <summary>
 ///     Returns ture if this job exists in the timeout system, else false.
 /// </summary>
 /// <param name="j"></param>
 /// <returns></returns>
 public static bool JobExists(JobTimeoutModel j)
 {
     lock (Queue) {
         return(Queue.Contains(j));
     }
 }