X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=src%2Fbindings%2Fpython%2Fbt2%2Fbt2%2Fgraph.py;h=6d083228ba3c6e951a6d09bb024cbb94496144c1;hp=1f280ba119ff4de691398980b9c4cd6e54f9eb2c;hb=9b4f9b425f2efce9a6ccc25f7ae062ebc1116a7d;hpb=cfbd7cf3bde05e8a6606478889dcd663604ef7b5 diff --git a/src/bindings/python/bt2/bt2/graph.py b/src/bindings/python/bt2/bt2/graph.py index 1f280ba1..6d083228 100644 --- a/src/bindings/python/bt2/bt2/graph.py +++ b/src/bindings/python/bt2/bt2/graph.py @@ -21,6 +21,7 @@ # THE SOFTWARE. from bt2 import native_bt, object, utils +import bt2.interrupter import bt2.connection import bt2.component import functools @@ -73,7 +74,7 @@ class Graph(object._SharedObject): ptr = native_bt.graph_create() if ptr is None: - raise bt2.CreationError('cannot create graph object') + raise bt2._MemoryError('cannot create graph object') super().__init__(ptr) @@ -147,7 +148,8 @@ class Graph(object._SharedObject): listener_ids = fn(self._ptr, listener_from_native) if listener_ids is None: - utils._raise_bt2_error('cannot add listener to graph object') + raise bt2._Error('cannot add listener to graph object') + return bt2._ListenerHandle(listener_ids, self) def add_ports_connected_listener(self, listener): @@ -161,31 +163,27 @@ class Graph(object._SharedObject): listener_ids = fn(self._ptr, listener_from_native) if listener_ids is None: - utils._raise_bt2_error('cannot add listener to graph object') + raise bt2._Error('cannot add listener to graph object') + return bt2._ListenerHandle(listener_ids, self) def run(self): status = native_bt.graph_run(self._ptr) try: - utils._handle_func_status( - status, 'graph object stopped running because of an unexpected error' - ) + utils._handle_func_status(status, 'graph object stopped running') except bt2.Stop: # done return except Exception: raise - def cancel(self): - status = native_bt.graph_cancel(self._ptr) - utils._handle_func_status(status, 'cannot cancel graph object') + def add_interrupter(self, interrupter): + utils._check_type(interrupter, bt2.interrupter.Interrupter) + native_bt.graph_add_interrupter(self._ptr, interrupter._ptr) - @property - def is_canceled(self): - is_canceled = native_bt.graph_is_canceled(self._ptr) - assert is_canceled >= 0 - return is_canceled > 0 + def interrupt(self): + native_bt.graph_interrupt(self._ptr) def create_output_port_message_iterator(self, output_port): utils._check_type(output_port, bt2.port._OutputPort) @@ -194,6 +192,6 @@ class Graph(object._SharedObject): ) if msg_iter_ptr is None: - raise bt2.CreationError('cannot create output port message iterator') + raise bt2._MemoryError('cannot create output port message iterator') return bt2.message_iterator._OutputPortMessageIterator(msg_iter_ptr)