X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=src%2Fbindings%2Fpython%2Fbt2%2Fbt2%2Futils.py;h=393f7ed883ec94f651355b7250d02601b190ff1f;hb=f5567ea88d172767b34373bc6e402da8bfd85ef8;hp=6d80fea283b59a45814233e7bfb335bee5885020;hpb=770538dd64bcd8f258cb059c438f845533900a27;p=babeltrace.git diff --git a/src/bindings/python/bt2/bt2/utils.py b/src/bindings/python/bt2/bt2/utils.py index 6d80fea2..393f7ed8 100644 --- a/src/bindings/python/bt2/bt2/utils.py +++ b/src/bindings/python/bt2/bt2/utils.py @@ -1,27 +1,9 @@ -# The MIT License (MIT) +# SPDX-License-Identifier: MIT # # Copyright (c) 2017 Philippe Proulx -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. import bt2 -import bt2.logging +from bt2 import logging as bt2_logging from bt2 import native_bt @@ -47,12 +29,13 @@ def _check_str(o): def _check_type(o, expected_type): if not isinstance(o, expected_type): - raise TypeError("'{}' is not a '{}' object".format(o.__class__.__name__, - expected_type)) + raise TypeError( + "'{}' is not a '{}' object".format(o.__class__.__name__, expected_type) + ) def _is_in_int64_range(v): - assert(isinstance(v, int)) + assert isinstance(v, int) return v >= -(2**63) and v <= (2**63 - 1) @@ -64,7 +47,7 @@ def _is_int64(v): def _is_in_uint64_range(v): - assert(isinstance(v, int)) + assert isinstance(v, int) return v >= 0 and v <= (2**64 - 1) @@ -80,9 +63,9 @@ def _check_int64(v, msg=None): if not _is_in_int64_range(v): if msg is None: - msg = 'expecting a signed 64-bit integral value' + msg = "expecting a signed 64-bit integral value" - msg += ' (got {})'.format(v) + msg += " (got {})".format(v) raise ValueError(msg) @@ -91,9 +74,9 @@ def _check_uint64(v, msg=None): if not _is_in_uint64_range(v): if msg is None: - msg = 'expecting an unsigned 64-bit integral value' + msg = "expecting an unsigned 64-bit integral value" - msg += ' (got {})'.format(v) + msg += " (got {})".format(v) raise ValueError(msg) @@ -109,32 +92,20 @@ def _check_alignment(a): _check_uint64(a) if not _is_pow2(a): - raise ValueError('{} is not a power of two'.format(a)) - - -def _raise_bt2_error(msg): - if msg is None: - raise bt2.Error - else: - raise bt2.Error(msg) - - -def _handle_ptr(ptr, msg=None): - if ptr is None: - _raise_bt2_error(msg) + raise ValueError("{} is not a power of two".format(a)) def _check_log_level(log_level): _check_int(log_level) log_levels = ( - bt2.logging.LoggingLevel.TRACE, - bt2.logging.LoggingLevel.DEBUG, - bt2.logging.LoggingLevel.INFO, - bt2.logging.LoggingLevel.WARNING, - bt2.logging.LoggingLevel.ERROR, - bt2.logging.LoggingLevel.FATAL, - bt2.logging.LoggingLevel.NONE, + bt2_logging.LoggingLevel.TRACE, + bt2_logging.LoggingLevel.DEBUG, + bt2_logging.LoggingLevel.INFO, + bt2_logging.LoggingLevel.WARNING, + bt2_logging.LoggingLevel.ERROR, + bt2_logging.LoggingLevel.FATAL, + bt2_logging.LoggingLevel.NONE, ) if log_level not in log_levels: @@ -146,11 +117,12 @@ def _handle_func_status(status, msg=None): # no error return - if status == native_bt.__BT_FUNC_STATUS_ERROR or status == native_bt.__BT_FUNC_STATUS_MEMORY_ERROR: - if msg is None: - raise bt2.Error - else: - raise bt2.Error(msg) + 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 @@ -161,35 +133,27 @@ def _handle_func_status(status, msg=None): raise bt2.TryAgain else: raise bt2.TryAgain(msg) - elif status == native_bt.__BT_FUNC_STATUS_CANCELED: - if msg is None: - raise bt2.Canceled - else: - raise bt2.Canceled(msg) - elif status == native_bt.__BT_FUNC_STATUS_LOADING_ERROR: - if msg is None: - raise bt2.LoadingError - else: - raise bt2.LoadingError(msg) - elif status == native_bt.__BT_FUNC_STATUS_OVERFLOW: + elif status == native_bt.__BT_FUNC_STATUS_OVERFLOW_ERROR: if msg is None: - raise bt2.OverflowError + raise bt2._OverflowError else: - raise bt2.OverflowError(msg) - elif status == native_bt.__BT_FUNC_STATUS_INVALID_OBJECT: + raise bt2._OverflowError(msg) + elif status == native_bt.__BT_FUNC_STATUS_UNKNOWN_OBJECT: if msg is None: - raise bt2.InvalidObject + raise bt2.UnknownObject else: - raise bt2.InvalidObject(msg) - elif status == native_bt.__BT_FUNC_STATUS_INVALID_PARAMS: - if msg is None: - raise bt2.InvalidParams - else: - raise bt2.InvalidParams(msg) - elif status == native_bt.__BT_FUNC_STATUS_UNSUPPORTED: - if msg is None: - raise bt2.Unsupported - else: - raise bt2.Unsupported(msg) + raise bt2.UnknownObject(msg) else: assert False + + +class _ListenerHandle: + def __init__(self, addr): + self._addr = addr + self._listener_id = None + + def _set_listener_id(self, listener_id): + self._listener_id = listener_id + + def _invalidate(self): + self._listener_id = None