示例#1
0
        public void AddJob(CloudPrintJob job)
        {
            ThrowIfDisposed();

            lock (PrintJobQueue)
            {
                PrintJobQueue.Enqueue(job);
            }

            ProcessQueuedPrintJobs();
        }
示例#2
0
        public void AddJobs(IEnumerable <CloudPrintJob> jobs)
        {
            ThrowIfDisposed();

            lock (PrintJobQueue)
            {
                foreach (var job in jobs)
                {
                    PrintJobQueue.Enqueue(job);
                }
            }

            ProcessQueuedPrintJobs();
        }
示例#3
0
        public IEnumerable <CloudPrintJob> GetQueuedJobs()
        {
            foreach (KeyValuePair <string, ConcurrentQueue <CloudPrintJob> > kvp in UserDeferredJobs.AsEnumerable())
            {
                foreach (CloudPrintJob job in kvp.Value.AsEnumerable())
                {
                    yield return(job);
                }
            }

            foreach (CloudPrintJob job in PrintJobQueue.AsEnumerable())
            {
                yield return(job);
            }
        }
示例#4
0
        public IEnumerable <CloudPrintJob> GetQueuedJobs(string username)
        {
            ConcurrentQueue <CloudPrintJob> queue;

            if (UserDeferredJobs.TryGetValue(username, out queue))
            {
                foreach (CloudPrintJob job in queue.AsEnumerable())
                {
                    yield return(job);
                }
            }

            foreach (CloudPrintJob job in PrintJobQueue.AsEnumerable().Where(j => j.Username == username))
            {
                yield return(job);
            }
        }
示例#5
0
 private void DoProcessQueuedPrintJobs(CancellationToken cancelToken)
 {
     Logger.Log(LogLevel.Debug, "Processing queued jobs");
     do
     {
         try
         {
             CloudPrintJob job;
             while (!cancelToken.IsCancellationRequested && PrintJobQueue.TryDequeue(out job))
             {
                 if (job.Status == CloudPrintJobStatus.QUEUED)
                 {
                     ProcessPrintJob(job);
                 }
             }
         }
         catch (Exception ex)
         {
             Logger.Log(LogLevel.Warning, "ProcessQueuedPrintJobs task caught exception {0}\n{1}", ex.Message, ex.ToString());
         }
     }while (!cancelToken.IsCancellationRequested && Interlocked.Decrement(ref QueuedPrintJobs) != 0);
     Logger.Log(LogLevel.Debug, "Done");
 }