4 class TheIteratorOfAllEvil(bt2
._UserMessageIterator
):
5 def __init__(self
, config
, port
):
6 tc
, sc
, ec1
, ec2
, params
= port
.user_data
8 stream
= trace
.create_stream(sc
)
10 if params
['with-packet-msgs']:
11 packet
= stream
.create_packet()
13 if params
['with-stream-msgs-cs']:
14 sb_msg
= self
._create
_stream
_beginning
_message
(stream
, 100)
16 sb_msg
= self
._create
_stream
_beginning
_message
(stream
)
18 parent
= packet
if params
['with-packet-msgs'] else stream
20 ev_msg1
= self
._create
_event
_message
(ec1
, parent
, 300)
21 ev_msg2
= self
._create
_event
_message
(ec2
, parent
, 400)
23 if params
['with-stream-msgs-cs']:
24 se_msg
= self
._create
_stream
_end
_message
(stream
, 1000)
26 se_msg
= self
._create
_stream
_end
_message
(stream
)
30 self
._msgs
.append(sb_msg
)
32 if params
['with-packet-msgs']:
33 self
._msgs
.append(self
._create
_packet
_beginning
_message
(packet
, 200))
35 self
._msgs
.append(ev_msg1
)
36 self
._msgs
.append(ev_msg2
)
38 if params
['with-packet-msgs']:
39 self
._msgs
.append(self
._create
_packet
_end
_message
(packet
, 900))
41 self
._msgs
.append(se_msg
)
44 config
.can_seek_forward
= True
46 def _user_seek_beginning(self
):
50 if self
._at
< len(self
._msgs
):
51 msg
= self
._msgs
[self
._at
]
58 @bt2.plugin_component_class
59 class TheSourceOfAllEvil(
60 bt2
._UserSourceComponent
, message_iterator_class
=TheIteratorOfAllEvil
62 def __init__(self
, config
, params
, obj
):
63 tc
= self
._create
_trace
_class
()
65 with_packets
= bool(params
['with-packet-msgs'])
67 # Use a clock class with an offset, so we can test with --begin or --end
68 # smaller than this offset (in other words, a time that it's not
69 # possible to represent with this clock class).
70 cc
= self
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(10000))
71 sc
= tc
.create_stream_class(
72 default_clock_class
=cc
,
73 supports_packets
=with_packets
,
74 packets_have_beginning_default_clock_snapshot
=with_packets
,
75 packets_have_end_default_clock_snapshot
=with_packets
,
77 ec1
= sc
.create_event_class(name
='event 1')
78 ec2
= sc
.create_event_class(name
='event 2')
79 self
._add
_output
_port
('out', (tc
, sc
, ec1
, ec2
, params
))
82 bt2
.register_plugin(__name__
, 'test-trimmer')