babeltrace2 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/babeltrace2.gemspec +13 -0
  4. data/lib/babeltrace2.rb +49 -0
  5. data/lib/babeltrace2/error-reporting.rb +432 -0
  6. data/lib/babeltrace2/func-status.rb +26 -0
  7. data/lib/babeltrace2/graph/component-class-dev.rb +801 -0
  8. data/lib/babeltrace2/graph/component-class.rb +134 -0
  9. data/lib/babeltrace2/graph/component-descriptor-set.rb +78 -0
  10. data/lib/babeltrace2/graph/component.rb +362 -0
  11. data/lib/babeltrace2/graph/connection.rb +35 -0
  12. data/lib/babeltrace2/graph/graph.rb +523 -0
  13. data/lib/babeltrace2/graph/interrupter.rb +57 -0
  14. data/lib/babeltrace2/graph/message-iterator-class.rb +374 -0
  15. data/lib/babeltrace2/graph/message-iterator.rb +253 -0
  16. data/lib/babeltrace2/graph/message.rb +721 -0
  17. data/lib/babeltrace2/graph/port.rb +124 -0
  18. data/lib/babeltrace2/graph/private-query-executor.rb +4 -0
  19. data/lib/babeltrace2/graph/query-executor.rb +142 -0
  20. data/lib/babeltrace2/graph/self-component-class.rb +37 -0
  21. data/lib/babeltrace2/graph/self-component-port.rb +35 -0
  22. data/lib/babeltrace2/graph/self-component.rb +264 -0
  23. data/lib/babeltrace2/graph/self-message-iterator.rb +147 -0
  24. data/lib/babeltrace2/integer-range-set.rb +275 -0
  25. data/lib/babeltrace2/logging-defs.rb +19 -0
  26. data/lib/babeltrace2/logging.rb +77 -0
  27. data/lib/babeltrace2/plugin/plugin-dev.rb +335 -0
  28. data/lib/babeltrace2/plugin/plugin-loading.rb +459 -0
  29. data/lib/babeltrace2/trace-ir/clock-class.rb +258 -0
  30. data/lib/babeltrace2/trace-ir/clock-snapshot.rb +45 -0
  31. data/lib/babeltrace2/trace-ir/event-class.rb +292 -0
  32. data/lib/babeltrace2/trace-ir/event.rb +91 -0
  33. data/lib/babeltrace2/trace-ir/field-class.rb +1416 -0
  34. data/lib/babeltrace2/trace-ir/field-path.rb +123 -0
  35. data/lib/babeltrace2/trace-ir/field.rb +871 -0
  36. data/lib/babeltrace2/trace-ir/packet.rb +57 -0
  37. data/lib/babeltrace2/trace-ir/stream-class.rb +425 -0
  38. data/lib/babeltrace2/trace-ir/stream.rb +137 -0
  39. data/lib/babeltrace2/trace-ir/trace-class.rb +343 -0
  40. data/lib/babeltrace2/trace-ir/trace.rb +321 -0
  41. data/lib/babeltrace2/types.rb +667 -0
  42. data/lib/babeltrace2/util.rb +23 -0
  43. data/lib/babeltrace2/value.rb +869 -0
  44. data/lib/babeltrace2/version.rb +126 -0
  45. metadata +105 -0
@@ -0,0 +1,134 @@
1
+ module Babeltrace2
2
+ BT_COMPONENT_CLASS_TYPE_SOURCE = 1 << 0
3
+ BT_COMPONENT_CLASS_TYPE_FILTER = 1 << 1
4
+ BT_COMPONENT_CLASS_TYPE_SINK = 1 << 2
5
+
6
+ BTComponentClassType = enum :bt_component_class_type,
7
+ [ :BT_COMPONENT_CLASS_TYPE_SOURCE,
8
+ BT_COMPONENT_CLASS_TYPE_SOURCE,
9
+ :BT_COMPONENT_CLASS_TYPE_FILTER,
10
+ BT_COMPONENT_CLASS_TYPE_FILTER,
11
+ :BT_COMPONENT_CLASS_TYPE_SINK,
12
+ BT_COMPONENT_CLASS_TYPE_SINK ]
13
+
14
+ attach_function :bt_component_class_get_type,
15
+ [:bt_component_class_handle],
16
+ :bt_component_class_type
17
+ attach_function :bt_component_class_get_name,
18
+ [:bt_component_class_handle],
19
+ :string
20
+ attach_function :bt_component_class_get_description,
21
+ [:bt_component_class_handle],
22
+ :string
23
+ attach_function :bt_component_class_get_help,
24
+ [:bt_component_class_handle],
25
+ :string
26
+ attach_function :bt_component_class_get_ref,
27
+ [:bt_component_class_handle],
28
+ :void
29
+ attach_function :bt_component_class_put_ref,
30
+ [:bt_component_class_handle],
31
+ :void
32
+
33
+ class BTComponentClass < BTSharedObject
34
+ Type = BTComponentClassType
35
+ @get_ref = :bt_component_class_get_ref
36
+ @put_ref = :bt_component_class_put_ref
37
+
38
+ def self.from_handle(handle, retain: true, auto_release: true)
39
+ case Babeltrace2.bt_component_class_get_type(handle)
40
+ when :BT_COMPONENT_CLASS_TYPE_SOURCE
41
+ handle = BTComponentClassSourceHandle.new(handle)
42
+ BTComponentClassSource
43
+ when :BT_COMPONENT_CLASS_TYPE_FILTER
44
+ handle = BTComponentClassFilterHandle.new(handle)
45
+ BTComponentClassFilter
46
+ when :BT_COMPONENT_CLASS_TYPE_SINK
47
+ handle = BTComponentClassSinkHandle.new(handle)
48
+ BTComponentClassSink
49
+ else
50
+ raise Error.new("Unknown component class type")
51
+ end.new(handle, retain: retain, auto_release: auto_release)
52
+ end
53
+
54
+ def get_type
55
+ Babeltrace2.bt_component_class_get_type(@handle)
56
+ end
57
+ alias type get_type
58
+
59
+ def is_source
60
+ get_type == :BT_COMPONENT_CLASS_TYPE_SOURCE
61
+ end
62
+ alias source? is_source
63
+
64
+ def is_filter
65
+ get_type == :BT_COMPONENT_CLASS_TYPE_FILTER
66
+ end
67
+ alias filter? is_filter
68
+
69
+ def is_sink
70
+ get_type == :BT_COMPONENT_CLASS_TYPE_SINK
71
+ end
72
+ alias sink? is_sink
73
+
74
+ def get_name
75
+ Babeltrace2.bt_component_class_get_name(@handle)
76
+ end
77
+ alias name get_name
78
+
79
+ def get_description
80
+ Babeltrace2.bt_component_class_get_description(@handle)
81
+ end
82
+ alias description get_description
83
+
84
+ def get_help
85
+ Babeltrace2.bt_component_class_get_help(@handle)
86
+ end
87
+ alias help get_help
88
+ end
89
+
90
+ attach_function :bt_component_class_source_get_ref,
91
+ [:bt_component_class_source_handle],
92
+ :void
93
+ attach_function :bt_component_class_source_put_ref,
94
+ [:bt_component_class_source_handle],
95
+ :void
96
+
97
+ class BTComponentClass
98
+ class Source < BTComponentClass
99
+ @get_ref = :bt_component_class_source_get_ref
100
+ @put_ref = :bt_component_class_source_put_ref
101
+ end
102
+ end
103
+ BTComponentClassSource = BTComponentClass::Source
104
+
105
+ attach_function :bt_component_class_filter_get_ref,
106
+ [:bt_component_class_filter_handle],
107
+ :void
108
+ attach_function :bt_component_class_filter_put_ref,
109
+ [:bt_component_class_filter_handle],
110
+ :void
111
+
112
+ class BTComponentClass
113
+ class Filter < BTComponentClass
114
+ @get_ref = :bt_component_class_filter_get_ref
115
+ @put_ref = :bt_component_class_filter_put_ref
116
+ end
117
+ end
118
+ BTComponentClassFilter = BTComponentClass::Filter
119
+
120
+ attach_function :bt_component_class_sink_get_ref,
121
+ [:bt_component_class_sink_handle],
122
+ :void
123
+ attach_function :bt_component_class_sink_put_ref,
124
+ [:bt_component_class_sink_handle],
125
+ :void
126
+
127
+ class BTComponentClass
128
+ class Sink < BTComponentClass
129
+ @get_ref = :bt_component_class_sink_get_ref
130
+ @put_ref = :bt_component_class_sink_put_ref
131
+ end
132
+ end
133
+ BTComponentClassSink = BTComponentClass::Sink
134
+ end
@@ -0,0 +1,78 @@
1
+ module Babeltrace2
2
+
3
+ attach_function :bt_component_descriptor_set_create,
4
+ [],
5
+ :bt_component_descriptor_set_handle
6
+
7
+ BT_COMPONENT_DESCRIPTOR_SET_ADD_DESCRIPTOR_STATUS_OK = BT_FUNC_STATUS_OK
8
+ BT_COMPONENT_DESCRIPTOR_SET_ADD_DESCRIPTOR_STATUS_MEMORY_ERROR = BT_FUNC_STATUS_MEMORY_ERROR
9
+ BTComponentDescriptorSetAddDescriptorStatus =
10
+ enum :bt_component_descriptor_set_add_descriptor_status,
11
+ [ :BT_COMPONENT_DESCRIPTOR_SET_ADD_DESCRIPTOR_STATUS_OK,
12
+ BT_COMPONENT_DESCRIPTOR_SET_ADD_DESCRIPTOR_STATUS_OK,
13
+ :BT_COMPONENT_DESCRIPTOR_SET_ADD_DESCRIPTOR_STATUS_MEMORY_ERROR,
14
+ BT_COMPONENT_DESCRIPTOR_SET_ADD_DESCRIPTOR_STATUS_MEMORY_ERROR ]
15
+
16
+ attach_function :bt_component_descriptor_set_add_descriptor,
17
+ [ :bt_component_descriptor_set_handle,
18
+ :bt_component_class_handle,
19
+ :bt_value_handle ],
20
+ :bt_component_descriptor_set_add_descriptor_status
21
+
22
+ attach_function :bt_component_descriptor_set_add_descriptor_with_initialize_method_data,
23
+ [ :bt_component_descriptor_set_handle,
24
+ :bt_component_class_handle,
25
+ :bt_value_handle,
26
+ :pointer ],
27
+ :bt_component_descriptor_set_add_descriptor_status
28
+
29
+ attach_function :bt_component_descriptor_set_get_ref,
30
+ [ :bt_component_descriptor_set_handle ],
31
+ :void
32
+
33
+ attach_function :bt_component_descriptor_set_put_ref,
34
+ [ :bt_component_descriptor_set_handle ],
35
+ :void
36
+
37
+ class BTComponent
38
+ DescriptorSetAddDescriptorStatus = BTComponentDescriptorSetAddDescriptorStatus
39
+ class DescriptorSet < BTSharedObject
40
+ AddDescriptorStatus = BTComponentDescriptorSetAddDescriptorStatus
41
+ @get_ref = :bt_component_descriptor_set_get_ref
42
+ @put_ref = :bt_component_descriptor_set_put_ref
43
+
44
+ def initialize(handle = nil, retain: true, auto_release: true)
45
+ if handle
46
+ super(handle, retain: retain, auto_release: auto_release)
47
+ else
48
+ handle = Babeltrace2.bt_component_descriptor_set_create()
49
+ raise Babeltrace2.process_error if handle.null?
50
+ super(handle)
51
+ end
52
+ end
53
+
54
+ def add_descriptor(component_class, params: {}, initialize_method_data: nil)
55
+ params = BTValue.from_value(params)
56
+ raise "invalid value" unless params.kind_of?(BTValueMap)
57
+ res = if initialize_method_data
58
+ Babeltrace2.bt_component_descriptor_set_add_descriptor_with_initialize_method_data(@handle, component_class, params, initialize_method_data)
59
+ else
60
+ Babeltrace2.bt_component_descriptor_set_add_descriptor(@handle, component_class, params)
61
+ end
62
+ raise Babeltrace2.process_error(res) if res != :BT_COMPONENT_DESCRIPTOR_SET_ADD_DESCRIPTOR_STATUS_OK
63
+ self
64
+ end
65
+
66
+ def get_greatest_operative_mip_version(logging_level = BTLogging.default_level)
67
+ ptr = FFI::MemoryPointer.new(:uint64)
68
+ res = Babeltrace2.bt_get_greatest_operative_mip_version(
69
+ @handle, logging_level, ptr)
70
+ raise Babeltrace2.process_error(res) if res != :BT_GET_GREATEST_OPERATIVE_MIP_VERSION_STATUS_OK
71
+ ptr.read_uint64
72
+ end
73
+ alias greatest_operative_mip_version get_greatest_operative_mip_version
74
+ end
75
+ end
76
+ BTComponentDescriptorSet = BTComponent::DescriptorSet
77
+
78
+ end
@@ -0,0 +1,362 @@
1
+ module Babeltrace2
2
+
3
+ attach_function :bt_component_get_class_type,
4
+ [ :bt_component_handle ],
5
+ :bt_component_class_type
6
+
7
+ attach_function :bt_component_borrow_class_const,
8
+ [ :bt_component_handle ],
9
+ :bt_component_class_handle
10
+
11
+ attach_function :bt_component_get_name,
12
+ [ :bt_component_handle ],
13
+ :string
14
+
15
+ attach_function :bt_component_get_logging_level,
16
+ [ :bt_component_handle ],
17
+ :bt_logging_level
18
+
19
+ attach_function :bt_component_get_ref,
20
+ [ :bt_component_handle ],
21
+ :void
22
+
23
+ attach_function :bt_component_put_ref,
24
+ [ :bt_component_handle ],
25
+ :void
26
+
27
+ class BTComponent < BTSharedObject
28
+ ClassType = BTComponentClassType
29
+ @get_ref = :bt_component_get_ref
30
+ @put_ref = :bt_component_put_ref
31
+
32
+ def self.from_handle(handle, retain: true, auto_release: true)
33
+ case Babeltrace2.bt_component_get_class_type(handle)
34
+ when :BT_COMPONENT_CLASS_TYPE_SOURCE
35
+ handle = BTComponentSourceHandle.new(handle)
36
+ BTComponentSource
37
+ when :BT_COMPONENT_CLASS_TYPE_FILTER
38
+ handle = BTComponentFilterHandle.new(handle)
39
+ BTComponentFilter
40
+ when :BT_COMPONENT_CLASS_TYPE_SINK
41
+ handle = BTComponentSinkHandle.new(handle)
42
+ BTComponentSink
43
+ else
44
+ raise Error.new("unknown component class type")
45
+ end.new(handle, retain: retain, auto_release: auto_release)
46
+ end
47
+
48
+ def get_class_type
49
+ Babeltrace2.bt_component_get_class_type(@handle)
50
+ end
51
+ alias class_type get_class_type
52
+
53
+ def is_source
54
+ get_class_type == :BT_COMPONENT_CLASS_TYPE_SOURCE
55
+ end
56
+ alias source? is_source
57
+
58
+ def is_filter
59
+ get_class_type == :BT_COMPONENT_CLASS_TYPE_FILTER
60
+ end
61
+ alias filter? is_filter
62
+
63
+ def is_sink
64
+ get_class_type == :BT_COMPONENT_CLASS_TYPE_SINK
65
+ end
66
+ alias sink? is_sink
67
+
68
+ def get_class
69
+ handle = Babeltrace2.bt_component_borrow_class_const(@handle)
70
+ BTComponentClass.from_handle(handle)
71
+ end
72
+
73
+ def get_name
74
+ Babeltrace2.bt_component_get_name(@handle)
75
+ end
76
+ alias name get_name
77
+
78
+ def get_logging_level
79
+ Babeltrace2.bt_component_get_logging_level(@handle)
80
+ end
81
+ alias logging_level get_logging_level
82
+ end
83
+
84
+ attach_function :bt_component_source_borrow_class_const,
85
+ [ :bt_component_source_handle ],
86
+ :bt_component_class_source_handle
87
+
88
+ attach_function :bt_component_source_get_output_port_count,
89
+ [ :bt_component_source_handle ],
90
+ :uint64
91
+
92
+ attach_function :bt_component_source_borrow_output_port_by_index_const,
93
+ [ :bt_component_source_handle,
94
+ :uint64 ],
95
+ :bt_port_output_handle
96
+
97
+ attach_function :bt_component_source_borrow_output_port_by_name_const,
98
+ [ :bt_component_source_handle,
99
+ :string ],
100
+ :bt_port_output_handle
101
+
102
+ attach_function :bt_component_source_get_ref,
103
+ [ :bt_component_source_handle ],
104
+ :void
105
+
106
+ attach_function :bt_component_source_put_ref,
107
+ [ :bt_component_source_handle ],
108
+ :void
109
+
110
+ class BTComponent::Source < BTComponent
111
+ @get_ref = :bt_component_source_get_ref
112
+ @put_ref = :bt_component_source_put_ref
113
+ def get_class
114
+ handle = Babeltrace2.bt_component_source_borrow_class_const(@handle)
115
+ BTComponentClassSource.new(handle, retain: true)
116
+ end
117
+
118
+ def get_output_port_count
119
+ Babeltrace2.bt_component_source_get_output_port_count(@handle)
120
+ end
121
+ alias output_port_count get_output_port_count
122
+
123
+ def get_output_port_by_index(index)
124
+ count = get_output_port_count
125
+ index += count if index < 0
126
+ return nil if index >= count || index < 0
127
+ handle = Babeltrace2.bt_component_source_borrow_output_port_by_index_const(@handle, index)
128
+ BTPortOutput.new(handle, retain: true)
129
+ end
130
+
131
+ def get_output_port_by_name(name)
132
+ handle = Babeltrace2.bt_component_source_borrow_output_port_by_name_const(@handle, name)
133
+ return nil if handle.null?
134
+ BTPortOutput.new(handle, retain: true)
135
+ end
136
+
137
+ def get_output_port(port)
138
+ case port
139
+ when String
140
+ get_output_port_by_name(port)
141
+ when Integer
142
+ get_output_port_by_index(port)
143
+ else
144
+ raise TypeError, "wrong type for port query"
145
+ end
146
+ end
147
+ alias output_port get_output_port
148
+
149
+ def output_ports
150
+ output_port_count.times.collect { |index|
151
+ handle = Babeltrace2.bt_component_source_borrow_output_port_by_index_const(
152
+ @handle, index)
153
+ BTPortOutput.new(handle, retain: true)
154
+ }
155
+ end
156
+ end
157
+ BTComponentSource = BTComponent::Source
158
+
159
+ attach_function :bt_component_filter_borrow_class_const,
160
+ [ :bt_component_filter_handle ],
161
+ :bt_component_class_filter_handle
162
+
163
+ attach_function :bt_component_filter_get_input_port_count,
164
+ [ :bt_component_filter_handle ],
165
+ :uint64
166
+
167
+ attach_function :bt_component_filter_borrow_input_port_by_index_const,
168
+ [ :bt_component_filter_handle,
169
+ :uint64 ],
170
+ :bt_port_input_handle
171
+
172
+ attach_function :bt_component_filter_borrow_input_port_by_name_const,
173
+ [ :bt_component_filter_handle,
174
+ :string ],
175
+ :bt_port_input_handle
176
+
177
+ attach_function :bt_component_filter_get_output_port_count,
178
+ [ :bt_component_filter_handle ],
179
+ :uint64
180
+
181
+ attach_function :bt_component_filter_borrow_output_port_by_index_const,
182
+ [ :bt_component_filter_handle,
183
+ :uint64 ],
184
+ :bt_port_output_handle
185
+
186
+ attach_function :bt_component_filter_borrow_output_port_by_name_const,
187
+ [ :bt_component_filter_handle,
188
+ :string ],
189
+ :bt_port_output_handle
190
+
191
+ attach_function :bt_component_filter_get_ref,
192
+ [ :bt_component_filter_handle ],
193
+ :void
194
+
195
+ attach_function :bt_component_filter_put_ref,
196
+ [ :bt_component_filter_handle ],
197
+ :void
198
+
199
+ class BTComponent::Filter < BTComponent
200
+ @get_ref = :bt_component_filter_get_ref
201
+ @put_ref = :bt_component_filter_put_ref
202
+ def get_class
203
+ handle = Babeltrace2.bt_component_filter_borrow_class_const(@handle)
204
+ BTComponentClassFilter.new(handle, retain: true)
205
+ end
206
+
207
+ def get_output_port_count
208
+ Babeltrace2.bt_component_filter_get_output_port_count(@handle)
209
+ end
210
+ alias output_port_count get_output_port_count
211
+
212
+ def get_output_port_by_index(index)
213
+ count = get_output_port_count
214
+ index += count if index < 0
215
+ return nil if index >= count || index < 0
216
+ handle = Babeltrace2.bt_component_filter_borrow_output_port_by_index_const(@handle, index)
217
+ BTPortOutput.new(handle, retain: true)
218
+ end
219
+
220
+ def get_output_port_by_name(name)
221
+ handle = Babeltrace2.bt_component_filter_borrow_output_port_by_name_const(@handle, name)
222
+ return nil if handle.null?
223
+ BTPortOutput.new(handle, retain: true)
224
+ end
225
+
226
+ def get_output_port(port)
227
+ case port
228
+ when String
229
+ get_output_port_by_name(port)
230
+ when Integer
231
+ get_output_port_by_index(port)
232
+ else
233
+ raise TypeError, "wrong type for port query"
234
+ end
235
+ end
236
+
237
+ def output_ports
238
+ output_port_count.times.collect { |index|
239
+ handle = Babeltrace2.bt_component_filter_borrow_output_port_by_index_const(
240
+ @handle, index)
241
+ BTPortOutput.new(handle, retain: true)
242
+ }
243
+ end
244
+ alias output_port get_output_port
245
+
246
+ def get_input_port_count
247
+ Babeltrace2.bt_component_filter_get_input_port_count(@handle)
248
+ end
249
+ alias input_port_count get_input_port_count
250
+
251
+ def get_input_port_by_index(index)
252
+ count = get_input_port_count
253
+ index += count if index < 0
254
+ return nil if index >= count || index < 0
255
+ handle = Babeltrace2.bt_component_filter_borrow_input_port_by_index_const(@handle, index)
256
+ BTPortInput.new(handle, retain: true)
257
+ end
258
+
259
+ def get_input_port_by_name(name)
260
+ handle = Babeltrace2.bt_component_filter_borrow_input_port_by_name_const(@handle, name)
261
+ return nil if handle.null?
262
+ BTPortInput.new(handle, retain: true)
263
+ end
264
+
265
+ def get_input_port(port)
266
+ case port
267
+ when String
268
+ get_input_port_by_name(port)
269
+ when Integer
270
+ get_input_port_by_index(port)
271
+ else
272
+ raise TypeError, "wrong type for port query"
273
+ end
274
+ end
275
+ alias input_port get_input_port
276
+
277
+ def input_ports
278
+ input_port_count.times.collect { |index|
279
+ handle = Babeltrace2.bt_component_filter_borrow_input_port_by_index_const(
280
+ @handle, index)
281
+ BTPortInput.new(handle, retain: true)
282
+ }
283
+ end
284
+ end
285
+ BTComponentFilter = BTComponent::Filter
286
+
287
+ attach_function :bt_component_sink_borrow_class_const,
288
+ [ :bt_component_sink_handle ],
289
+ :bt_component_class_sink_handle
290
+
291
+ attach_function :bt_component_sink_get_input_port_count,
292
+ [ :bt_component_sink_handle ],
293
+ :uint64
294
+
295
+ attach_function :bt_component_sink_borrow_input_port_by_index_const,
296
+ [ :bt_component_sink_handle,
297
+ :uint64 ],
298
+ :bt_port_input_handle
299
+
300
+ attach_function :bt_component_sink_borrow_input_port_by_name_const,
301
+ [ :bt_component_sink_handle,
302
+ :string ],
303
+ :bt_port_input_handle
304
+
305
+ attach_function :bt_component_sink_get_ref,
306
+ [ :bt_component_sink_handle ],
307
+ :void
308
+
309
+ attach_function :bt_component_sink_put_ref,
310
+ [ :bt_component_sink_handle ],
311
+ :void
312
+
313
+ class BTComponent::Sink < BTComponent
314
+ @get_ref = :bt_component_sink_get_ref
315
+ @put_ref = :bt_component_sink_put_ref
316
+ def get_class
317
+ handle = Babeltrace2.bt_component_sink_borrow_class_const(@handle)
318
+ BTComponentClassSink.new(handle, retain: true)
319
+ end
320
+
321
+ def get_input_port_count
322
+ Babeltrace2.bt_component_sink_get_input_port_count(@handle)
323
+ end
324
+ alias input_port_count get_input_port_count
325
+
326
+ def get_input_port_by_index(index)
327
+ count = get_input_port_count
328
+ index += count if index < 0
329
+ return nil if index >= count || index < 0
330
+ handle = Babeltrace2.bt_component_sink_borrow_input_port_by_index_const(@handle, index)
331
+ BTPortInput.new(handle, retain: true)
332
+ end
333
+
334
+ def get_input_port_by_name(name)
335
+ handle = Babeltrace2.bt_component_sink_borrow_input_port_by_name_const(@handle, name)
336
+ return nil if handle.null?
337
+ BTPortInput.new(handle, retain: true)
338
+ end
339
+
340
+ def get_input_port(port)
341
+ case port
342
+ when String
343
+ get_input_port_by_name(port)
344
+ when Integer
345
+ get_input_port_by_index(port)
346
+ else
347
+ raise TypeError, "wrong type for port query"
348
+ end
349
+ end
350
+ alias input_port get_input_port
351
+
352
+ def input_ports
353
+ input_port_count.times.collect { |index|
354
+ handle = Babeltrace2.bt_component_sink_borrow_input_port_by_index_const(
355
+ @handle, index)
356
+ BTPortInput.new(handle, retain: true)
357
+ }
358
+ end
359
+ end
360
+ BTComponentSink = BTComponent::Sink
361
+
362
+ end