def nextMessage(self): """ Don't override.. """ # Get the next message from the queue. message = self.queued_messages.popleft() try: self.processMessage(message) except Exception as exception: message.addError( halMessage.HalMessageError(source=self.module_name, message=str(exception), m_exception=exception, stack_trace=traceback.format_exc())) message.decRefCount(name=self.module_name) # Check if this is being handled by a worker. If it is then we # wait until the worker is done before moving on to process the # next message. if self.worker is not None: return # Start the timer if we still have messages left. if (len(self.queued_messages) > 0): self.queued_messages_timer.start()
def handleWorkerError(self, worker_id, message, exception, stack_trace): message.addError(halMessage.HalMessageError(source = self.module_name, message = str(exception), m_exception = exception, stack_trace = stack_trace)) # Cleanup the worker. self.cleanUpWorker(worker_id)
def handleWorkerError(self, worker_id, message, exception, stack_trace): """ You probably don't want to override this.. """ message.addError(halMessage.HalMessageError(source = self.module_name, message = str(exception), m_exception = exception, stack_trace = stack_trace)) # Decrement ref count otherwise the error will hang HAL. message.decRefCount() # Log when the worker failed. message.logEvent("worker failed") # Cleanup the worker. self.cleanUpWorker(worker_id)
def nextMessage(self): """ Don't override.. """ # Get the next message from the queue. message = self.queued_messages.popleft() try: self.processMessage(message) except Exception as exception: message.addError(halMessage.HalMessageError(source = self.module_name, message = str(exception), m_exception = exception, stack_trace = traceback.format_exc())) message.decRefCount() # Start the timer if we still have messages left. if (len(self.queued_messages) > 0): self.queued_messages_timer.start()
def processMessage(self, message): if message.isType("configure1"): self.newMessage.emit( halMessage.HalMessage(source=self, m_type="add to ui", data=self.configure_dict)) elif message.isType("configure2"): self.view.copyDefaultParameters() self.view.markCurrentAsInitialized() elif message.isType("get parameters"): p = self.view.getParameters(message.getData()["index or name"]) if p is None: message.addResponse( halMessage.HalMessageResponse(source=self.module_name, data={"found": False})) else: message.addResponse( halMessage.HalMessageResponse(source=self.module_name, data={ "parameters": p, "found": True })) elif message.isType("initial parameters"): # It is okay for other modules to just send their parameters as we make # a copy before storing them in this module. self.view.updateCurrentParameters( message.getSourceName(), message.getData()["parameters"].copy()) elif message.isType("new parameters file"): # Ignore this message if the UI is disabled and send a warning. if not self.view.getEnabled(): msg = "Parameters files cannot be added during editting / filming" message.addError( halMessage.HalMessageError(source=self.module_name, message=msg)) return data = message.getData() # Check if these parameters should be default parameters. For now # anyway this should only be possible at initialization. is_default = False if "is default" in data: is_default = data["is default"] # Process new parameters file. self.view.newParametersFile(data["filename"], is_default) elif message.isType("parameters changed"): self.waiting_on.remove(message.getSourceName()) if message.getData() is not None: self.view.updateCurrentParameters( message.getSourceName(), message.getData()["new parameters"].copy()) # All modules have finished changing parameters. if (len(self.waiting_on) == 0): self.updateComplete() elif message.isType("set parameters"): if self.locked_out: raise halExceptions.HalException( "'set parameters' received while locked out.") [found, current ] = self.view.setParameters(message.getData()["index or name"]) message.addResponse( halMessage.HalMessageResponse(source=self.module_name, data={ "current": current, "found": found })) elif message.isType("start film"): self.view.enableUI(False) elif message.isType("stop film"): self.view.enableUI(True) elif message.isType("wait for"): if self.module_name in message.getData()["module names"]: self.wait_for.append(message.getSourceName())