- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
server/lib/gutenbach/server/printer.py
rc1dc25f r9225351 9 9 import traceback 10 10 import sys 11 from . import sync 11 12 12 13 … … 100 101 with self.lock: 101 102 try: 102 if self.current_job is None:103 if not self.paused and self.current_job is None: 103 104 self.start_job() 104 105 elif self.current_job.is_done: … … 124 125 125 126 @property 127 @sync 126 128 def state(self): 127 with self.lock: 128 if self.current_job is not None: 129 val = States.PROCESSING 130 elif len(self.pending_jobs) == 0: 131 val = States.IDLE 132 else: 133 val = States.STOPPED 134 return val 135 136 @property 129 if self.current_job is not None: 130 return States.PROCESSING 131 elif len(self.pending_jobs) == 0: 132 return States.IDLE 133 else: 134 return States.STOPPED 135 136 @property 137 @sync 137 138 def active_jobs(self): 138 with self.lock: 139 jobs = self.pending_jobs[:] 140 if self.current_job is not None: 141 jobs.insert(0, self.current_job.id) 139 jobs = self.pending_jobs[:] 140 if self.current_job is not None: 141 jobs.insert(0, self.current_job.id) 142 142 return jobs 143 143 … … 146 146 ###################################################################### 147 147 148 @sync 148 149 def start_job(self): 149 with self.lock: 150 if self.current_job is None: 151 try: 152 job_id = heapq.heappop(self.pending_jobs) 153 self.current_job = self.get_job(job_id) 154 self.current_job.play() 155 except IndexError: 156 self.current_job = None 157 except InvalidJobStateException: 158 heapq.heappush(self.pending_jobs, self.current_job.id) 159 self.current_job = None 150 if self.current_job is None: 151 try: 152 job_id = heapq.heappop(self.pending_jobs) 153 self.current_job = self.get_job(job_id) 154 self.current_job.play() 155 except IndexError: 156 self.current_job = None 157 except InvalidJobStateException: 158 heapq.heappush(self.pending_jobs, self.current_job.id) 159 self.current_job = None 160 160 161 @sync 161 162 def complete_job(self): 162 with self.lock:163 if self.current_job is None:164 return 165 166 try:167 if not self.current_job.is_done:168 self.current_job.stop()169 finally:170 self.finished_jobs.append(self.current_job.id)171 self.current_job = None 172 163 if self.current_job is None: 164 return 165 166 try: 167 if not self.current_job.is_done: 168 self.current_job.stop() 169 finally: 170 self.finished_jobs.append(self.current_job.id) 171 self.current_job = None 172 173 @sync 173 174 def get_job(self, job_id): 174 with self.lock: 175 if job_id not in self.jobs: 176 raise InvalidJobException(job_id) 177 job = self.jobs[job_id] 178 return job 175 if job_id not in self.jobs: 176 raise InvalidJobException(job_id) 177 return self.jobs[job_id] 179 178 180 179 ###################################################################### … … 412 411 return job_id 413 412 413 @sync 414 414 def pause_printer(self): 415 pass 416 415 """Pause the printer. 416 417 Does nothing if the printer is already paused. 418 """ 419 if self.paused: 420 return 421 422 if self.current_job is not None and self.current_job.is_playing: 423 self.current_job.pause() 424 425 self.paused = True 426 427 428 429 @sync 417 430 def resume_printer(self): 418 pass 431 """Resume the printer. 432 433 Does nothing if the printer is not paused. 434 """ 435 if not self.paused: 436 return 437 438 if self.current_job is not None: 439 self.current_job.resume() 440 441 self.paused = False 419 442 420 443 def get_printer_attributes(self, requested_attributes=None):
Note: See TracChangeset
for help on using the changeset viewer.