Exemple #1
0
    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()
Exemple #2
0
 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)
Exemple #3
0
    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)
Exemple #4
0
    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())