- Timestamp:
- Jan 21, 2012, 7:25:17 PM (12 years ago)
- Branches:
- no-cups
- Children:
- 5e70cc2
- Parents:
- 7daf25f
- git-author:
- Jessica B. Hamrick <jhamrick@…> (01/21/12 19:25:17)
- git-committer:
- Jessica B. Hamrick <jhamrick@…> (01/21/12 19:25:17)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
server/lib/gutenbach/server/printer.py
r57bc2dc r33528b4 85 85 86 86 self.lock = threading.RLock() 87 self. running = False87 self._running = False 88 88 self.paused = False 89 89 … … 91 91 self._next_job_id = 1 92 92 93 @sync 93 94 def __repr__(self): 94 95 return str(self) 95 96 97 @sync 96 98 def __str__(self): 97 return "<Printer '%s'>" % self.name 99 return "<Printer '%s'>" % self.name 98 100 99 101 def run(self): 100 self. running = True101 while self. running:102 with self.lock:103 try:104 if not self.paused andself.current_job is None:102 self._running = True 103 while self._running: 104 try: 105 with self.lock: 106 if self.current_job is None: 105 107 self.start_job() 106 108 elif self.current_job.is_done: 107 109 self.complete_job() 108 109 110 110 except: 111 logger.fatal(traceback.format_exc()) 112 sys.exit(1) 111 113 time.sleep(0.1) 114 115 def stop(self): 116 with self.lock: 117 self._running = False 118 if self.ident is not None and self.isAlive(): 119 self.join() 112 120 113 121 ###################################################################### … … 143 151 return jobs 144 152 153 @property 154 def is_running(self): 155 running = self.ident is not None and self.isAlive() and self._running 156 return running 157 145 158 ###################################################################### 146 159 ### Methods ### … … 149 162 @sync 150 163 def start_job(self): 151 if self.current_job is None:164 if not self.paused and self.current_job is None: 152 165 try: 153 166 job_id = heapq.heappop(self.pending_jobs) … … 162 175 @sync 163 176 def complete_job(self): 164 if self.current_job is None: 165 return 166 167 try: 168 if not self.current_job.is_done: 169 self.current_job.stop() 170 finally: 171 self.finished_jobs.append(self.current_job.id) 172 self.current_job = None 177 if not self.paused and self.current_job is not None: 178 try: 179 if not self.current_job.is_done: 180 self.current_job.stop() 181 finally: 182 self.finished_jobs.append(self.current_job.id) 183 self.current_job = None 173 184 174 185 @sync … … 450 461 Does nothing if the printer is already paused. 451 462 """ 452 if self.paused: 453 return 454 455 if self.current_job is not None and self.current_job.is_playing: 456 self.current_job.pause() 457 458 self.paused = True 463 464 if not self.paused: 465 if self.current_job is not None and self.current_job.is_playing: 466 self.current_job.pause() 467 self.paused = True 468 logger.info("%s paused", str(self)) 459 469 460 470 @sync … … 464 474 Does nothing if the printer is not paused. 465 475 """ 466 if not self.paused: 467 return 468 469 if self.current_job is not None: 470 self.current_job.resume() 471 472 self.paused = False 476 477 if self.paused: 478 if self.current_job is not None: 479 self.current_job.resume() 480 self.paused = False 481 logger.info("%s unpaused", str(self)) 473 482 474 483 @sync
Note: See TracChangeset
for help on using the changeset viewer.