def _handle_func_status(status, msg=None): if status == native_bt.__BT_FUNC_STATUS_OK: # no error return if status == native_bt.__BT_FUNC_STATUS_ERROR: assert msg is not None raise bt2._Error(msg) elif status == native_bt.__BT_FUNC_STATUS_MEMORY_ERROR: assert msg is not None raise bt2._MemoryError(msg) elif status == native_bt.__BT_FUNC_STATUS_END: if msg is None: raise bt2.Stop else: raise bt2.Stop(msg) elif status == native_bt.__BT_FUNC_STATUS_AGAIN: if msg is None: raise bt2.TryAgain else: raise bt2.TryAgain(msg) elif status == native_bt.__BT_FUNC_STATUS_OVERFLOW_ERROR: if msg is None: raise bt2._OverflowError else: raise bt2._OverflowError(msg) elif status == native_bt.__BT_FUNC_STATUS_UNKNOWN_OBJECT: if msg is None: raise bt2.UnknownObject else: raise bt2.UnknownObject(msg) else: assert False
def __next__(self): if self.case == "STOP": raise bt2.Stop() if self.case == "INTERRUPTED": os.kill(os.getpid(), signal.SIGINT) # Wait until the graph is in the interrupted state. timeout_s = 10 for _ in range(timeout_s * 10): if self._is_interrupted: raise bt2.TryAgain() time.sleep(0.1) raise Exception('{} was not interrupted after {} seconds'.format( self.__class__.__name__, timeout_s)) elif self.case == "ERROR": raise TypeError("Raising type error") else: raise ValueError("Invalid parameter")