Ejemplo n.º 1
0
 def append_field(self, name, field_class):
     utils._check_str(name)
     utils._check_type(field_class, _FieldClass)
     ret = self._add_field(field_class._ptr, name)
     utils._handle_ret(
         ret, "cannot add field to {} field class object".format(
             self._NAME.lower()))
Ejemplo n.º 2
0
 def __setitem__(self, key, value):
     utils._check_str(key)
     value = bt2.create_value(value)
     ret = native_bt.trace_set_environment_field(self._trace._ptr, key,
                                                 value._ptr)
     utils._handle_ret(ret,
                       "cannot set trace class object's environment entry")
Ejemplo n.º 3
0
    def log_level(self, log_level):
        log_levels = (
            EventClassLogLevel.UNSPECIFIED,
            EventClassLogLevel.EMERGENCY,
            EventClassLogLevel.ALERT,
            EventClassLogLevel.CRITICAL,
            EventClassLogLevel.ERROR,
            EventClassLogLevel.WARNING,
            EventClassLogLevel.NOTICE,
            EventClassLogLevel.INFO,
            EventClassLogLevel.DEBUG_SYSTEM,
            EventClassLogLevel.DEBUG_PROGRAM,
            EventClassLogLevel.DEBUG_PROCESS,
            EventClassLogLevel.DEBUG_MODULE,
            EventClassLogLevel.DEBUG_UNIT,
            EventClassLogLevel.DEBUG_FUNCTION,
            EventClassLogLevel.DEBUG_LINE,
            EventClassLogLevel.DEBUG,
        )

        if log_level not in log_levels:
            raise ValueError("'{}' is not a valid log level".format(log_level))

        ret = native_bt.event_class_set_log_level(self._ptr, log_level)
        utils._handle_ret(ret, "cannot set event class object's log level")
Ejemplo n.º 4
0
 def __setitem__(self, key, value):
     utils._check_type(key, bt2.ClockClass)
     utils._check_uint64(value)
     ret = native_bt.clock_class_priority_map_add_clock_class(self._ptr,
                                                              key._ptr,
                                                              value)
     utils._handle_ret(ret, "cannot set clock class's priority in clock class priority map object")
Ejemplo n.º 5
0
    def log_level(self, log_level):
        log_levels = (
            EventClassLogLevel.UNSPECIFIED,
            EventClassLogLevel.EMERGENCY,
            EventClassLogLevel.ALERT,
            EventClassLogLevel.CRITICAL,
            EventClassLogLevel.ERROR,
            EventClassLogLevel.WARNING,
            EventClassLogLevel.NOTICE,
            EventClassLogLevel.INFO,
            EventClassLogLevel.DEBUG_SYSTEM,
            EventClassLogLevel.DEBUG_PROGRAM,
            EventClassLogLevel.DEBUG_PROCESS,
            EventClassLogLevel.DEBUG_MODULE,
            EventClassLogLevel.DEBUG_UNIT,
            EventClassLogLevel.DEBUG_FUNCTION,
            EventClassLogLevel.DEBUG_LINE,
            EventClassLogLevel.DEBUG,
        )

        if log_level not in log_levels:
            raise ValueError("'{}' is not a valid log level".format(log_level))

        ret = native_bt.event_class_set_log_level(self._ptr, log_level)
        utils._handle_ret(ret, "cannot set event class object's log level")
Ejemplo n.º 6
0
    def add_listener(self, listener_type, listener):
        if not hasattr(listener, '__call__'):
            raise TypeError("'listener' parameter is not callable")

        if listener_type == GraphListenerType.PORT_ADDED:
            fn = native_bt.py3_graph_add_port_added_listener
            listener_from_native = functools.partial(_graph_port_added_listener_from_native,
                                                     listener)
        elif listener_type == GraphListenerType.PORT_REMOVED:
            fn = native_bt.py3_graph_add_port_removed_listener
            listener_from_native = functools.partial(_graph_port_removed_listener_from_native,
                                                     listener)
        elif listener_type == GraphListenerType.PORTS_CONNECTED:
            fn = native_bt.py3_graph_add_ports_connected_listener
            listener_from_native = functools.partial(_graph_ports_connected_listener_from_native,
                                                     listener)
        elif listener_type == GraphListenerType.PORTS_DISCONNECTED:
            fn = native_bt.py3_graph_add_ports_disconnected_listener
            listener_from_native = functools.partial(_graph_ports_disconnected_listener_from_native,
                                                     listener)
        else:
            raise TypeError

        listener_id = fn(self._ptr, listener_from_native)
        utils._handle_ret(listener_id, 'cannot add listener to graph object')
        return bt2._ListenerHandle(listener_id, self)
Ejemplo n.º 7
0
 def offset(self, offset):
     utils._check_type(offset, ClockClassOffset)
     ret = native_bt.clock_class_set_offset_s(self._ptr, offset.seconds)
     utils._handle_ret(ret,
                       "cannot set clock class object's offset (seconds)")
     ret = native_bt.clock_class_set_offset_cycles(self._ptr, offset.cycles)
     utils._handle_ret(ret,
                       "cannot set clock class object's offset (cycles)")
Ejemplo n.º 8
0
 def exponent_size(self, exponent_size):
     utils._check_uint64(exponent_size)
     ret = native_bt.field_class_floating_point_set_exponent_digits(
         self._ptr, exponent_size)
     utils._handle_ret(
         ret,
         "cannot set floating point number field class object's exponent size"
     )
Ejemplo n.º 9
0
 def offset(self):
     ret, offset_s = native_bt.ctf_clock_get_offset_s(self._ptr)
     utils._handle_ret(
         ret, "cannot get CTF writer clock object's offset (seconds)")
     ret, offset_cycles = native_bt.ctf_clock_get_offset(self._ptr)
     utils._handle_ret(
         ret, "cannot get CTF writer clock object's offset (cycles)")
     return bt2.ClockClassOffset(offset_s, offset_cycles)
Ejemplo n.º 10
0
    def value(self):
        if self.field_type.is_signed:
            ret, value = native_bt.ctf_field_signed_integer_get_value(self._ptr)
        else:
            ret, value = native_bt.ctf_field_unsigned_integer_get_value(self._ptr)

        utils._handle_ret(ret, "cannot get integer field object's value")
        return value
Ejemplo n.º 11
0
 def offset(self, offset):
     utils._check_type(offset, bt2.ClockClassOffset)
     ret = native_bt.ctf_clock_set_offset_s(self._ptr, offset.seconds)
     utils._handle_ret(
         ret, "cannot set CTF writer clock object's offset (seconds)")
     ret = native_bt.ctf_clock_set_offset(self._ptr, offset.cycles)
     utils._handle_ret(
         ret, "cannot set CTF writer clock object's offset (cycles)")
Ejemplo n.º 12
0
 def mantissa_size(self, mantissa_size):
     utils._check_uint64(mantissa_size)
     ret = native_bt.field_class_floating_point_set_mantissa_digits(
         self._ptr, mantissa_size)
     utils._handle_ret(
         ret,
         "cannot set floating point number field class object's mantissa size"
     )
Ejemplo n.º 13
0
    def context_field(self, context):
        context_ptr = None

        if context is not None:
            utils._check_type(context, bt2.fields._Field)
            context_ptr = context._ptr

        ret = native_bt.ctf_event_set_event_context(self._ptr, context_ptr)
        utils._handle_ret(ret, "cannot set event object's context field")
Ejemplo n.º 14
0
 def offset(self):
     ret, offset_s = native_bt.ctf_clock_class_get_offset_s(self._ptr)
     utils._handle_ret(ret,
                       "cannot get clock class object's offset (seconds)")
     ret, offset_cycles = native_bt.ctf_clock_class_get_offset_cycles(
         self._ptr)
     utils._handle_ret(ret,
                       "cannot get clock class object's offset (cycles)")
     return ClockClassOffset(offset_s, offset_cycles)
Ejemplo n.º 15
0
    def header_field(self, header_field):
        header_field_ptr = None

        if header_field is not None:
            utils._check_type(header_field, bt2.fields._Field)
            header_field_ptr = header_field._ptr

        ret = native_bt.ctf_event_set_header(self._ptr, header_field_ptr)
        utils._handle_ret(ret, "cannot set event object's header field")
Ejemplo n.º 16
0
    def __next__(self):
        if self._at == len(self._variant_field_type):
            raise StopIteration

        ret, name, field_type_ptr = native_bt.ctf_field_type_variant_get_field(self._variant_field_type._ptr, self._at)
        utils._handle_ret(ret, "cannot get variant field type object's field")
        native_bt.put(field_type_ptr)
        self._at += 1
        return name
Ejemplo n.º 17
0
 def __setitem__(self, key, value):
     utils._check_type(key, bt2.ClockClass)
     utils._check_uint64(value)
     ret = native_bt.clock_class_priority_map_add_clock_class(
         self._ptr, key._ptr, value)
     utils._handle_ret(
         ret,
         "cannot set clock class's priority in clock class priority map object"
     )
Ejemplo n.º 18
0
    def header_field(self, header_field):
        header_field_ptr = None

        if header_field is not None:
            utils._check_type(header_field, bt2.fields._Field)
            header_field_ptr = header_field._ptr

        ret = native_bt.ctf_event_set_header(self._ptr, header_field_ptr)
        utils._handle_ret(ret, "cannot set event object's header field")
Ejemplo n.º 19
0
    def _set_value(self, value):
        value = self._value_to_int(value)

        if self.field_class.is_signed:
            ret = native_bt.field_signed_integer_set_value(self._ptr, value)
        else:
            ret = native_bt.field_unsigned_integer_set_value(self._ptr, value)

        utils._handle_ret(ret, "cannot set integer field object's value")
Ejemplo n.º 20
0
    def payload_field(self, payload):
        payload_ptr = None

        if payload is not None:
            utils._check_type(payload, bt2.fields._Field)
            payload_ptr = payload._ptr

        ret = native_bt.ctf_event_set_payload_field(self._ptr, payload_ptr)
        utils._handle_ret(ret, "cannot set event object's payload field")
Ejemplo n.º 21
0
    def context_field(self, context_field):
        context_field_ptr = None

        if context_field is not None:
            utils._check_type(context_field, bt2.field._Field)
            context_field_ptr = context_field._ptr

        ret = native_bt.packet_set_context(self._ptr, context_field_ptr)
        utils._handle_ret(ret, "cannot set packet object's context field")
Ejemplo n.º 22
0
    def context_field(self, context_field):
        context_field_ptr = None

        if context_field is not None:
            utils._check_type(context_field, bt2.field._Field)
            context_field_ptr = context_field._ptr

        ret = native_bt.packet_set_context(self._ptr, context_field_ptr)
        utils._handle_ret(ret, "cannot set packet object's context field")
Ejemplo n.º 23
0
    def payload_field(self, payload):
        payload_ptr = None

        if payload is not None:
            utils._check_type(payload, bt2.fields._Field)
            payload_ptr = payload._ptr

        ret = native_bt.ctf_event_set_payload_field(self._ptr, payload_ptr)
        utils._handle_ret(ret, "cannot set event object's payload field")
Ejemplo n.º 24
0
    def payload_field_type(self, payload_field_type):
        payload_field_type_ptr = None

        if payload_field_type is not None:
            utils._check_type(payload_field_type, bt2.field_types._FieldType)
            payload_field_type_ptr = payload_field_type._ptr

        ret = native_bt.event_class_set_payload_type(self._ptr, payload_field_type_ptr)
        utils._handle_ret(ret, "cannot set event class object's payload field type")
Ejemplo n.º 25
0
    def context_field(self, context):
        context_ptr = None

        if context is not None:
            utils._check_type(context, bt2.fields._Field)
            context_ptr = context._ptr

        ret = native_bt.ctf_event_set_event_context(self._ptr, context_ptr)
        utils._handle_ret(ret, "cannot set event object's context field")
Ejemplo n.º 26
0
    def value(self, value):
        value = self._value_to_int(value)

        if self.field_type.is_signed:
            ret = native_bt.ctf_field_signed_integer_set_value(self._ptr, value)
        else:
            ret = native_bt.ctf_field_unsigned_integer_set_value(self._ptr, value)

        utils._handle_ret(ret, "cannot set integer field object's value")
Ejemplo n.º 27
0
    def context_field_type(self, context_field_type):
        context_field_type_ptr = None

        if context_field_type is not None:
            utils._check_type(context_field_type, bt2.field_types._FieldType)
            context_field_type_ptr = context_field_type._ptr

        ret = native_bt.event_class_set_context_type(self._ptr, context_field_type_ptr)
        utils._handle_ret(ret, "cannot set event class object's context field type")
Ejemplo n.º 28
0
    def packet_header_field_type(self, packet_header_field_type):
        packet_header_field_type_ptr = None

        if packet_header_field_type is not None:
            utils._check_type(packet_header_field_type, bt2.field_types._FieldType)
            packet_header_field_type_ptr = packet_header_field_type._ptr

        ret = native_bt.trace_set_packet_header_type(self._ptr,
                                                     packet_header_field_type_ptr)
        utils._handle_ret(ret, "cannot set trace class object's packet header field type")
Ejemplo n.º 29
0
    def stream_event_context_field(self, stream_event_context):
        stream_event_context_ptr = None

        if stream_event_context is not None:
            utils._check_type(stream_event_context, bt2.fields._Field)
            stream_event_context_ptr = stream_event_context._ptr

        ret = native_bt.event_set_stream_event_context(self._ptr,
                                                       stream_event_context_ptr)
        utils._handle_ret(ret, "cannot set event object's stream event context field")
Ejemplo n.º 30
0
    def value(self):
        if self.field_type.is_signed:
            ret, value = native_bt.ctf_field_signed_integer_get_value(
                self._ptr)
        else:
            ret, value = native_bt.ctf_field_unsigned_integer_get_value(
                self._ptr)

        utils._handle_ret(ret, "cannot get integer field object's value")
        return value
Ejemplo n.º 31
0
    def stream_event_context_field(self, stream_event_context):
        stream_event_context_ptr = None

        if stream_event_context is not None:
            utils._check_type(stream_event_context, bt2.fields._Field)
            stream_event_context_ptr = stream_event_context._ptr

        ret = native_bt.ctf_event_set_stream_event_context(self._ptr,
                                                           stream_event_context_ptr)
        utils._handle_ret(ret, "cannot set event object's stream event context field")
Ejemplo n.º 32
0
    def _value(self):
        ret, value = native_bt.field_floating_point_get_value(self._ptr)

        if ret < 0:
            if not self.is_set:
                return

            utils._handle_ret(ret, "cannot get floating point number field's value")

        return value
Ejemplo n.º 33
0
    def packet_header_field_class(self, packet_header_field_class):
        packet_header_field_class_ptr = None

        if packet_header_field_class is not None:
            utils._check_type(packet_header_field_class, bt2.field_class._FieldClass)
            packet_header_field_class_ptr = packet_header_field_class._ptr

        ret = native_bt.trace_set_packet_header_type(self._ptr,
                                                     packet_header_field_class_ptr)
        utils._handle_ret(ret, "cannot set trace class object's packet header field class")
Ejemplo n.º 34
0
    def packet_context_field_type(self, packet_context_field_type):
        packet_context_field_type_ptr = None

        if packet_context_field_type is not None:
            utils._check_type(packet_context_field_type, bt2.field_types._FieldType)
            packet_context_field_type_ptr = packet_context_field_type._ptr

        ret = native_bt.ctf_stream_class_set_packet_context_type(self._ptr,
                                                                 packet_context_field_type_ptr)
        utils._handle_ret(ret, "cannot set stream class object's packet context field type")
Ejemplo n.º 35
0
    def event_context_field_type(self, event_context_field_type):
        event_context_field_type_ptr = None

        if event_context_field_type is not None:
            utils._check_type(event_context_field_type, bt2.field_types._FieldType)
            event_context_field_type_ptr = event_context_field_type._ptr

        ret = native_bt.ctf_stream_class_set_event_context_type(self._ptr,
                                                               event_context_field_type_ptr)
        utils._handle_ret(ret, "cannot set stream class object's event context field type")
Ejemplo n.º 36
0
    def packet_header_field(self, packet_header_field):
        packet_header_field_ptr = None

        if packet_header_field is not None:
            utils._check_type(packet_header_field, fields._Field)
            packet_header_field_ptr = packet_header_field._ptr

        ret = native_bt.ctf_stream_set_packet_header(self._ptr,
                                                     packet_header_field_ptr)
        utils._handle_ret(ret, "cannot set CTF writer stream object's packet header field")
Ejemplo n.º 37
0
    def event_context_field_class(self, event_context_field_class):
        event_context_field_class_ptr = None

        if event_context_field_class is not None:
            utils._check_type(event_context_field_class, bt2.field_class._FieldClass)
            event_context_field_class_ptr = event_context_field_class._ptr

        ret = native_bt.stream_class_set_event_context_type(self._ptr,
                                                            event_context_field_class_ptr)
        utils._handle_ret(ret, "cannot set stream class object's event context field class")
Ejemplo n.º 38
0
    def packet_context_field_class(self, packet_context_field_class):
        packet_context_field_class_ptr = None

        if packet_context_field_class is not None:
            utils._check_type(packet_context_field_class, bt2.field_class._FieldClass)
            packet_context_field_class_ptr = packet_context_field_class._ptr

        ret = native_bt.stream_class_set_packet_context_type(self._ptr,
                                                             packet_context_field_class_ptr)
        utils._handle_ret(ret, "cannot set stream class object's packet context field class")
Ejemplo n.º 39
0
    def packet_context_field(self, packet_context_field):
        packet_context_field_ptr = None

        if packet_context_field is not None:
            utils._check_type(packet_context_field, bt2.fields._Field)
            packet_context_field_ptr = packet_context_field._ptr

        ret = native_bt.stream_set_packet_context(self._ptr,
                                                  packet_context_field_ptr)
        utils._handle_ret(ret, "cannot set CTF writer stream object's packet context field")
Ejemplo n.º 40
0
    def __eq__(self, other):
        if not isinstance(other, self.__class__):
            # not comparing apples to apples
            return False

        if self.addr == other.addr:
            return True

        ret = native_bt.field_class_compare(self._ptr, other._ptr)
        utils._handle_ret(ret, "cannot compare field classes")
        return ret == 0
Ejemplo n.º 41
0
    def context_field_class(self, context_field_class):
        context_field_class_ptr = None

        if context_field_class is not None:
            utils._check_type(context_field_class, bt2.field_class._FieldClass)
            context_field_class_ptr = context_field_class._ptr

        ret = native_bt.event_class_set_context_type(self._ptr,
                                                     context_field_class_ptr)
        utils._handle_ret(
            ret, "cannot set event class object's context field class")
Ejemplo n.º 42
0
    def __eq__(self, other):
        if not isinstance(other, self.__class__):
            # not comparing apples to apples
            return False

        if self.addr == other.addr:
            return True

        ret = native_bt.field_class_compare(self._ptr, other._ptr)
        utils._handle_ret(ret, "cannot compare field classes")
        return ret == 0
Ejemplo n.º 43
0
    def payload_field_class(self, payload_field_class):
        payload_field_class_ptr = None

        if payload_field_class is not None:
            utils._check_type(payload_field_class, bt2.field_class._FieldClass)
            payload_field_class_ptr = payload_field_class._ptr

        ret = native_bt.event_class_set_payload_type(self._ptr,
                                                     payload_field_class_ptr)
        utils._handle_ret(
            ret, "cannot set event class object's payload field class")
Ejemplo n.º 44
0
    def _get_clock_value_cycles(self, clock_class_ptr):
        clock_value_ptr = native_bt.ctf_event_get_clock_value(self._ptr,
                                                              clock_class_ptr)

        if clock_value_ptr is None:
            return

        ret, cycles = native_bt.ctf_clock_value_get_value(clock_value_ptr)
        native_bt.put(clock_value_ptr)
        utils._handle_ret(ret, "cannot get clock value object's cycles")
        return cycles
Ejemplo n.º 45
0
    def _get_clock_value_cycles(self, clock_class_ptr):
        clock_value_ptr = native_bt.ctf_event_get_clock_value(
            self._ptr, clock_class_ptr)

        if clock_value_ptr is None:
            return

        ret, cycles = native_bt.ctf_clock_value_get_value(clock_value_ptr)
        native_bt.put(clock_value_ptr)
        utils._handle_ret(ret, "cannot get clock value object's cycles")
        return cycles
Ejemplo n.º 46
0
    def context_field_type(self, context_field_type):
        context_field_type_ptr = None

        if context_field_type is not None:
            utils._check_type(context_field_type, bt2.field_types._FieldType)
            context_field_type_ptr = context_field_type._ptr

        ret = native_bt.ctf_event_class_set_context_type(
            self._ptr, context_field_type_ptr)
        utils._handle_ret(
            ret, "cannot set event class object's context field type")
Ejemplo n.º 47
0
    def payload_field_type(self, payload_field_type):
        payload_field_type_ptr = None

        if payload_field_type is not None:
            utils._check_type(payload_field_type, bt2.field_types._FieldType)
            payload_field_type_ptr = payload_field_type._ptr

        ret = native_bt.ctf_event_class_set_payload_type(
            self._ptr, payload_field_type_ptr)
        utils._handle_ret(
            ret, "cannot set event class object's payload field type")
Ejemplo n.º 48
0
    def packet_context_field(self, packet_context_field):
        packet_context_field_ptr = None

        if packet_context_field is not None:
            utils._check_type(packet_context_field, bt2.field._Field)
            packet_context_field_ptr = packet_context_field._ptr

        ret = native_bt.stream_set_packet_context(self._ptr,
                                                  packet_context_field_ptr)
        utils._handle_ret(
            ret, "cannot set CTF writer stream object's packet context field")
Ejemplo n.º 49
0
    def __next__(self):
        if self._at == len(self._stream_class):
            raise StopIteration

        ec_ptr = native_bt.stream_class_get_event_class_by_index(self._stream_class._ptr,
                                                                 self._at)
        assert(ec_ptr)
        ev_id = native_bt.event_class_get_id(ec_ptr)
        native_bt.put(ec_ptr)
        utils._handle_ret(ev_id, "cannot get event class object's ID")
        self._at += 1
        return ev_id
Ejemplo n.º 50
0
    def _value(self):
        if self.field_type.is_signed:
            ret, value = native_bt.field_signed_integer_get_value(self._ptr)
        else:
            ret, value = native_bt.field_unsigned_integer_get_value(self._ptr)

        if ret < 0:
            if not self.is_set:
                return

            utils._handle_ret(ret, "cannot get integer field's value")

        return value
Ejemplo n.º 51
0
    def __getitem__(self, index):
        utils._check_uint64(index)

        if index >= len(self):
            raise IndexError

        if self.is_signed:
            get_fn = native_bt.ctf_field_type_enumeration_get_mapping_signed
        else:
            get_fn = native_bt.ctf_field_type_enumeration_get_mapping_unsigned

        ret, name, lower, upper = get_fn(self._ptr, index)
        utils._handle_ret(ret, "cannot get enumeration field type object's mapping")
        return _EnumerationFieldTypeMapping(name, lower, upper)
Ejemplo n.º 52
0
    def __next__(self):
        if self._done:
            raise StopIteration

        if self._is_signed:
            ret, name, lower, upper = native_bt.ctf_field_type_enumeration_mapping_iterator_get_signed(self._ptr)
        else:
            ret, name, lower, upper = native_bt.ctf_field_type_enumeration_mapping_iterator_get_unsigned(self._ptr)

        utils._handle_ret(ret, "cannot get enumeration field type mapping iterator object's current mapping")
        mapping = _EnumerationFieldTypeMapping(name, lower, upper)
        ret = native_bt.ctf_field_type_enumeration_mapping_iterator_next(self._ptr)

        if ret < 0:
            self._done = True

        return mapping
Ejemplo n.º 53
0
    def add_mapping(self, name, lower, upper=None):
        utils._check_str(name)

        if upper is None:
            upper = lower

        if self.is_signed:
            add_fn = native_bt.field_class_enumeration_add_mapping_signed
            utils._check_int64(lower)
            utils._check_int64(upper)
        else:
            add_fn = native_bt.field_class_enumeration_add_mapping_unsigned
            utils._check_uint64(lower)
            utils._check_uint64(upper)

        ret = add_fn(self._ptr, name, lower, upper)
        utils._handle_ret(ret, "cannot add mapping to enumeration field class object")
Ejemplo n.º 54
0
 def add_clock_class(self, clock_class):
     utils._check_type(clock_class, bt2.ClockClass)
     ret = native_bt.trace_add_clock_class(self._ptr, clock_class._ptr)
     utils._handle_ret(ret, "cannot add clock class object to trace class object")