babeltrace2 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b661027d46180b1a162ce91aad9ad783e5700abc1182199408d19c61410f2df6
4
- data.tar.gz: 9f207749e36ecf12c8e0aae0b54749f967e1aa9830b4bf38b72eac47d1443017
3
+ metadata.gz: '0239b5e18b776cf7b8d6907e35c6a71aa22f9c6164a38269a629c4a2a1867687'
4
+ data.tar.gz: 0fa88f1bf9c68147a24c401cb447a21e16d6c6c89262125cb7796aa41087f51b
5
5
  SHA512:
6
- metadata.gz: b5b73639f60a15169307c2c52708478211e445298a294d98bc745ee364c2a009e4a320008c58fac46b3408483ef487869b8a77d88f45e91f8d77d3cd140c960e
7
- data.tar.gz: feb554583fb6ad8e3ac8c80f148a44fe497295167891f0bac620933848b4f8b36c5d57d5751dca613fcabc427c012913c7699f856d3f46c0467a9eaac2ad4bde
6
+ metadata.gz: b9d1a6d4f31fb45027d3f1cca7ffc3f1e994178c9781f1dfa9cedc0687e2186cce4b882629e1d635394e07f371c7d4e89d354e762b3e3185f1380d2ab2104155
7
+ data.tar.gz: 8a12153ae9b69012021889f462d7d233728b43c9aca6bc586f2cfe0d9625770fed24ab967af1591cb396d5dc64f3704d5f1f9cd6b56c5af3dec0cc1ea1db3215
data/babeltrace2.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'babeltrace2'
3
- s.version = "0.1.0"
3
+ s.version = "0.1.3"
4
4
  s.author = "Brice Videau"
5
5
  s.email = "bvideau@anl.gov"
6
6
  s.homepage = "https://github.com/alcf-perfengr/babeltrace2-ruby"
@@ -6,6 +6,16 @@ module Babeltrace2
6
6
  :BT_ERROR_CAUSE_ACTOR_TYPE_COMPONENT_CLASS, 1 << 2,
7
7
  :BT_ERROR_CAUSE_ACTOR_TYPE_MESSAGE_ITERATOR, 1 << 3]
8
8
 
9
+ def self.verbose?
10
+ !!@verbose
11
+ end
12
+
13
+ def self.verbose=(val)
14
+ @verbose = !!val
15
+ end
16
+
17
+ @verbose = ENV["VERBOSE"]
18
+
9
19
  class BTError < BTObject
10
20
  end
11
21
 
@@ -347,14 +357,14 @@ module Babeltrace2
347
357
  item = ""
348
358
  item << c.file_name << ":"
349
359
  item << c.line_number.to_s
350
- item << (mess.match(/:in /) ? mess : ".")
360
+ item << (mess.match(/:in /) ? mess : Babeltrace2.verbose? ? " :: " << mess : ".")
351
361
  backtrace.push(item)
352
362
  cs[1..-1].each { |c|
353
363
  item = ""
354
364
  item << c.file_name << ":"
355
365
  item << c.line_number.to_s
356
366
  mess = c.message
357
- item << (mess.match(/:in /) ? mess : ".")
367
+ item << (mess.match(/:in /) ? mess : Babeltrace2.verbose? ? " :: " << mess : ".")
358
368
  backtrace.push(item)
359
369
  }
360
370
  [klass, message, backtrace]
@@ -424,7 +434,7 @@ module Babeltrace2
424
434
  e = klass.new(message)
425
435
  else
426
436
  message = "#{code}" unless message
427
- e = Error.new
437
+ e = Error.new(message)
428
438
  end
429
439
  e.set_backtrace(backtrace+caller_locations.collect(&:to_s))
430
440
  e
@@ -347,13 +347,14 @@ module Babeltrace2
347
347
  logging_level: BTLogging.default_level,
348
348
  initialize_method_data: nil)
349
349
  ptr = FFI::MemoryPointer.new(:pointer)
350
+ bt_params = BTValue.from_value(params)
350
351
  res = if initialize_method_data
351
352
  Babeltrace2.bt_graph_add_source_component_with_initialize_method_data(
352
- @handle, component_class, name, BTValue.from_value(params),
353
+ @handle, component_class, name, bt_params,
353
354
  initialize_method_data, logging_level, ptr)
354
355
  else
355
356
  Babeltrace2.bt_graph_add_source_component(
356
- @handle, component_class, name, BTValue.from_value(params),
357
+ @handle, component_class, name, bt_params,
357
358
  logging_level, ptr)
358
359
  end
359
360
  raise Babeltrace2.process_error(res) if res != :BT_GRAPH_ADD_COMPONENT_STATUS_OK
@@ -365,13 +366,14 @@ module Babeltrace2
365
366
  logging_level: BTLogging.default_level,
366
367
  initialize_method_data: nil)
367
368
  ptr = FFI::MemoryPointer.new(:pointer)
369
+ bt_params = BTValue.from_value(params)
368
370
  res = if initialize_method_data
369
371
  Babeltrace2.bt_graph_add_filter_component_with_initialize_method_data(
370
- @handle, component_class, name, BTValue.from_value(params),
372
+ @handle, component_class, name, bt_params,
371
373
  initialize_method_data, logging_level, ptr)
372
374
  else
373
375
  Babeltrace2.bt_graph_add_filter_component(
374
- @handle, component_class, name, BTValue.from_value(params),
376
+ @handle, component_class, name, bt_params,
375
377
  logging_level, ptr)
376
378
  end
377
379
  raise Babeltrace2.process_error(res) if res != :BT_GRAPH_ADD_COMPONENT_STATUS_OK
@@ -383,13 +385,14 @@ module Babeltrace2
383
385
  logging_level: BTLogging.default_level,
384
386
  initialize_method_data: nil)
385
387
  ptr = FFI::MemoryPointer.new(:pointer)
388
+ bt_params = BTValue.from_value(params)
386
389
  res = if initialize_method_data
387
390
  Babeltrace2.bt_graph_add_sink_component_with_initialize_method_data(
388
- @handle, component_class, name, BTValue.from_value(params),
391
+ @handle, component_class, name, bt_params,
389
392
  initialize_method_data, logging_level, ptr)
390
393
  else
391
394
  Babeltrace2.bt_graph_add_sink_component(
392
- @handle, component_class, name, BTValue.from_value(params),
395
+ @handle, component_class, name, bt_params,
393
396
  logging_level, ptr)
394
397
  end
395
398
  raise Babeltrace2.process_error(res) if res != :BT_GRAPH_ADD_COMPONENT_STATUS_OK
@@ -159,7 +159,7 @@ module Babeltrace2
159
159
  mess = method.call(BTSelfMessageIterator.new(self_message_iterator,
160
160
  retain: false, auto_release: false),
161
161
  capacity)
162
- if mess.size < capacity
162
+ if mess.size <= capacity
163
163
  mess.each { |m| bt_message_get_ref(m.handle) }
164
164
  messages.write_array_of_pointer(mess.collect(&:handle))
165
165
  count.write_uint64(mess.size)
@@ -190,7 +190,6 @@ module Babeltrace2
190
190
  ptr_messages = FFI::MemoryPointer.new(:pointer)
191
191
  ptr_count = FFI::MemoryPointer.new(:uint64)
192
192
  while ((res = Babeltrace2.bt_message_iterator_next(@handle, ptr_messages, ptr_count)) == :BT_MESSAGE_ITERATOR_NEXT_STATUS_AGAIN)
193
- puts "waiting"
194
193
  sleep BT_SLEEP_TIME
195
194
  end
196
195
  case res
@@ -87,8 +87,9 @@ module Babeltrace2
87
87
  if handle
88
88
  super(handle, retain: retain, auto_release: auto_release)
89
89
  else
90
+ bt_params = BTValue.from_value(params)
90
91
  handle = Babeltrace2.bt_query_executor_create_with_method_data(
91
- component_class, object_name, BTValue.from_value(params), method_data)
92
+ component_class, object_name, bt_params, method_data)
92
93
  raise Babeltrace2.process_error if handle.null?
93
94
  super(handle)
94
95
  end
@@ -233,7 +233,8 @@ module Babeltrace2
233
233
  alias uuid get_uuid
234
234
 
235
235
  def set_user_attributes(user_attributes)
236
- Babeltrace2.bt_clock_class_set_user_attributes(@handle, BTValue.from_value(user_attributes))
236
+ bt_user_attributes = BTValue.from_value(user_attributes)
237
+ Babeltrace2.bt_clock_class_set_user_attributes(@handle, bt_user_attributes)
237
238
  self
238
239
  end
239
240
 
@@ -254,5 +255,33 @@ module Babeltrace2
254
255
  raise Babeltrace2.process_error(res) if res != :BT_CLOCK_CLASS_CYCLES_TO_NS_FROM_ORIGIN_STATUS_OK
255
256
  ptr.read_int64
256
257
  end
258
+
259
+ def to_h
260
+ res = {}
261
+ res[:name] = name if name
262
+ res[:description] = description if description
263
+ res[:frequency] = frequency
264
+ res[:precision] = precision
265
+ res[:offset] = offset
266
+ res[:origin_is_unix_epoch] = origin_is_unix_epoch?
267
+ res[:uuid] = uuid.to_s if uuid
268
+ user_attributes_value = user_attributes.value
269
+ res[:user_attributes] = user_attributes_value if !user_attributes_value.empty?
270
+ res
271
+ end
272
+
273
+ def self.from_h(self_component, h)
274
+ o = self_component.create_clock_class
275
+ o.name = h[:name] if h[:name]
276
+ o.description = h[:description] if h[:description]
277
+ o.frequency = h[:frequency] if h[:frequency]
278
+ o.precision = h[:precision] if h[:precision]
279
+ o.set_offset(*h[:offset]) if h[:offset]
280
+ o.origin_is_unix_epoch = h[:origin_is_unix_epoch]
281
+ o.uuid = BTUUID.from_string(h[:uuid]) if h[:uuid]
282
+ o.user_attributes = h[:user_attributes] if h[:user_attributes]
283
+ h[:bt_clock_class] = o
284
+ o
285
+ end
257
286
  end
258
287
  end
@@ -275,7 +275,8 @@ module Babeltrace2
275
275
  alias specific_context_field_class get_specific_context_field_class
276
276
 
277
277
  def set_user_attributes(user_attributes)
278
- Babeltrace2.bt_event_class_set_user_attributes(@handle, BTValue.from_value(user_attributes))
278
+ bt_user_attributes = BTValue.from_value(user_attributes)
279
+ Babeltrace2.bt_event_class_set_user_attributes(@handle, bt_user_attributes)
279
280
  self
280
281
  end
281
282
 
@@ -288,5 +289,32 @@ module Babeltrace2
288
289
  BTValueMap.new(Babeltrace2.bt_event_class_borrow_user_attributes(@handle), retain: true)
289
290
  end
290
291
  alias user_attributes get_user_attributes
292
+
293
+ def to_h
294
+ res = { id: id }
295
+ res[:name] = name if name
296
+ res[:log_level] = log_level if log_level
297
+ res[:emf_uri] = emf_uri if emf_uri
298
+ res[:specific_context_field_class] = specific_context_field_class.to_h if specific_context_field_class
299
+ res[:payload_field_class] = payload_field_class.to_h if payload_field_class
300
+ user_attributes_value = user_attributes.value
301
+ res[:user_attributes] = user_attributes_value if !user_attributes_value.empty?
302
+ res
303
+ end
304
+
305
+ def self.from_h(trace_class, stream_class, h, stream_class_h)
306
+ id = stream_class.assigns_automatic_event_class_id? ? nil : h[:id]
307
+ o = self.new(stream_class: stream_class, id: id)
308
+ o.name = h[:name] if h[:name]
309
+ o.log_level = h[:log_level] if h[:log_level]
310
+ o.emf_uri = h[:emf_uri] if h[:emf_uri]
311
+ o.specific_context_field_class = BTFieldClass.from_h(trace_class,
312
+ h[:specific_context_field_class], stream_class_h) if h[:specific_context_field_class]
313
+ o.payload_field_class = BTFieldClass.from_h(trace_class,
314
+ h[:payload_field_class], stream_class_h) if h[:payload_field_class]
315
+ o.user_attributes = h[:user_attributes] if h[:user_attributes]
316
+ h[:bt_event_class] = o
317
+ o
318
+ end
291
319
  end
292
320
  end
@@ -86,6 +86,10 @@ module Babeltrace2
86
86
  BTField.from_handle(handle)
87
87
  end
88
88
  alias common_context_field get_common_context_field
89
+
90
+ def name
91
+ get_class.name
92
+ end
89
93
  end
90
94
 
91
95
  end
@@ -159,7 +159,8 @@ module Babeltrace2
159
159
  alias type? type_is
160
160
 
161
161
  def set_user_attributes(user_attributes)
162
- Babeltrace2.bt_field_class_set_user_attributes(@handle, BTValue.from_value(user_attributes))
162
+ bt_user_attributes = BTValue.from_value(user_attributes)
163
+ Babeltrace2.bt_field_class_set_user_attributes(@handle, bt_user_attributes)
163
164
  self
164
165
  end
165
166
 
@@ -172,6 +173,36 @@ module Babeltrace2
172
173
  BTValueMap.new(Babeltrace2.bt_field_class_borrow_user_attributes(@handle), retain: true)
173
174
  end
174
175
  alias user_attributes get_user_attributes
176
+
177
+ def to_h
178
+ res = { type: class_snake_case_name }
179
+ user_attributes_value = user_attributes.value
180
+ res[:user_attributes] = user_attributes_value if !user_attributes_value.empty?
181
+ res
182
+ end
183
+
184
+ def self.from_h(trace_class, h, stream_class_h = nil)
185
+ Babeltrace2.const_get(snake_case_to_class(h[:type])).from_h(
186
+ trace_class, h, stream_class_h)
187
+ end
188
+
189
+ def from_h(h)
190
+ self.user_attributes = h[:user_attributes] if h[:user_attributes]
191
+ self
192
+ end
193
+
194
+ private
195
+
196
+ def class_snake_case_name
197
+ str = self.class.name.gsub(/::/, '')
198
+ str.match(/BTFieldClass(.*)/)[1].
199
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
200
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase
201
+ end
202
+
203
+ def self.snake_case_to_class(str)
204
+ "BTFieldClass" << str.split("_").collect(&:capitalize).join
205
+ end
175
206
  end
176
207
 
177
208
  attach_function :bt_field_class_bool_create,
@@ -189,6 +220,12 @@ module Babeltrace2
189
220
  super(handle, retain: false)
190
221
  end
191
222
  end
223
+
224
+ def self.from_h(trace_class, h, stream_class_h = nil)
225
+ o = self.new(trace_class: trace_class).from_h(h)
226
+ h[:bt_field_class] = o
227
+ o
228
+ end
192
229
  end
193
230
  BTFieldClassBool = BTFieldClass::Bool
194
231
  BTFieldClass::TYPE_MAP[:BT_FIELD_CLASS_TYPE_BOOL] = [
@@ -219,6 +256,18 @@ module Babeltrace2
219
256
  Babeltrace2.bt_field_class_bit_array_get_length(@handle)
220
257
  end
221
258
  alias length get_length
259
+
260
+ def to_h
261
+ res = super
262
+ res[:length] = length
263
+ res
264
+ end
265
+
266
+ def self.from_h(trace_class, h, stream_class_h = nil)
267
+ o = self.new(trace_class: trace_class, length: h[:length]).from_h(h)
268
+ h[:bt_field_class] = o
269
+ o
270
+ end
222
271
  end
223
272
  BTFieldClassBitArray = BTFieldClass::BitArray
224
273
  BTFieldClass::TYPE_MAP[:BT_FIELD_CLASS_TYPE_BIT_ARRAY] = [
@@ -260,7 +309,7 @@ module Babeltrace2
260
309
  class BTFieldClass::Integer < BTFieldClass
261
310
 
262
311
  def set_field_value_range(n)
263
- raise "invalid range" if n < 0 || n > 63
312
+ raise "invalid range" if n < 0 || n > 64
264
313
  Babeltrace2.bt_field_class_integer_set_field_value_range(@handle, n)
265
314
  self
266
315
  end
@@ -305,6 +354,20 @@ module Babeltrace2
305
354
  preferred_display_base
306
355
  end
307
356
  end
357
+
358
+ def to_h
359
+ res = super
360
+ res[:field_value_range] = field_value_range
361
+ res[:preferred_display_base] = preferred_display_base_integer
362
+ res
363
+ end
364
+
365
+ def from_h(h)
366
+ super
367
+ self.field_value_range = h[:field_value_range] if h[:field_value_range]
368
+ self.preferred_display_base = h[:preferred_display_base] if h[:preferred_display_base]
369
+ self
370
+ end
308
371
  end
309
372
  BTFieldClassInteger = BTFieldClass::Integer
310
373
 
@@ -323,6 +386,12 @@ module Babeltrace2
323
386
  super(handle, retain: false)
324
387
  end
325
388
  end
389
+
390
+ def self.from_h(trace_class, h, stream_class_h = nil)
391
+ o = self.new(trace_class: trace_class).from_h(h)
392
+ h[:bt_field_class] = o
393
+ o
394
+ end
326
395
  end
327
396
  BTFieldClass::IntegerUnsigned = BTFieldClass::Integer::Unsigned
328
397
  BTFieldClassIntegerUnsigned = BTFieldClass::Integer::Unsigned
@@ -345,6 +414,12 @@ module Babeltrace2
345
414
  super(handle, retain: false)
346
415
  end
347
416
  end
417
+
418
+ def self.from_h(trace_class, h, stream_class_h = nil)
419
+ o = self.new(trace_class: trace_class).from_h(h)
420
+ h[:bt_field_class] = o
421
+ o
422
+ end
348
423
  end
349
424
  BTFieldClass::IntegerSigned = BTFieldClass::Integer::Signed
350
425
  BTFieldClassIntegerSigned = BTFieldClass::Integer::Signed
@@ -371,6 +446,12 @@ module Babeltrace2
371
446
  super(handle, retain: false)
372
447
  end
373
448
  end
449
+
450
+ def self.from_h(trace_class, h, stream_class_h = nil)
451
+ o = self.new(trace_class: trace_class).from_h(h)
452
+ h[:bt_field_class] = o
453
+ o
454
+ end
374
455
  end
375
456
  BTFieldClass::RealSinglePrecision = BTFieldClass::Real::SinglePrecision
376
457
  BTFieldClassRealSinglePrecision = BTFieldClass::Real::SinglePrecision
@@ -393,6 +474,12 @@ module Babeltrace2
393
474
  super(handle, retain: false)
394
475
  end
395
476
  end
477
+
478
+ def self.from_h(trace_class, h, stream_class_h = nil)
479
+ o = self.new(trace_class: trace_class).from_h(h)
480
+ h[:bt_field_class] = o
481
+ o
482
+ end
396
483
  end
397
484
  BTFieldClass::RealDoublePrecision = BTFieldClass::Real::DoublePrecision
398
485
  BTFieldClassRealDoublePrecision = BTFieldClass::Real::DoublePrecision
@@ -448,6 +535,25 @@ module Babeltrace2
448
535
  end
449
536
  alias mapping get_mapping
450
537
 
538
+ def to_h
539
+ res = super
540
+ res[:mappings] = get_mapping_count.times.collect { |i|
541
+ mapping = get_mapping_by_index(i)
542
+ [mapping.label, mapping.ranges.each.collect { |r| [r.lower, r.upper] }]
543
+ }.to_h
544
+ res
545
+ end
546
+
547
+ def from_h(h)
548
+ super
549
+ if h[:mappings]
550
+ h[:mappings].each { |name, ranges|
551
+ add_mapping(name, ranges)
552
+ }
553
+ end
554
+ self
555
+ end
556
+
451
557
  class Mapping < BTObject
452
558
  def get_label
453
559
  label = Babeltrace2.bt_field_class_enumeration_mapping_get_label(@handle)
@@ -511,6 +617,12 @@ module Babeltrace2
511
617
  end
512
618
  end
513
619
 
620
+ def self.from_h(trace_class, h, stream_class_h = nil)
621
+ o = self.new(trace_class: trace_class).from_h(h)
622
+ h[:bt_field_class] = o
623
+ o
624
+ end
625
+
514
626
  def add_mapping(label, ranges)
515
627
  label = label.inspect if label.kind_of?(Symbol)
516
628
  ranges = BTIntegerRangeSetUnsigned.from_value(ranges)
@@ -608,6 +720,12 @@ module Babeltrace2
608
720
  end
609
721
  end
610
722
 
723
+ def self.from_h(trace_class, h, stream_class_h = nil)
724
+ o = self.new(trace_class: trace_class).from_h(h)
725
+ h[:bt_field_class] = o
726
+ o
727
+ end
728
+
611
729
  def add_mapping(label, ranges)
612
730
  label = label.inspect if label.kind_of?(Symbol)
613
731
  ranges = BTIntegerRangeSetSigned.from_value(ranges)
@@ -672,6 +790,12 @@ module Babeltrace2
672
790
  super(handle, retain: false)
673
791
  end
674
792
  end
793
+
794
+ def self.from_h(trace_class, h, stream_class_h = nil)
795
+ o = self.new(trace_class: trace_class).from_h(h)
796
+ h[:bt_field_class] = o
797
+ o
798
+ end
675
799
  end
676
800
  BTFieldClassString = BTFieldClass::String
677
801
  BTFieldClass::TYPE_MAP[:BT_FIELD_CLASS_TYPE_STRING] = [
@@ -692,6 +816,12 @@ module Babeltrace2
692
816
  Babeltrace2.bt_field_class_array_borrow_element_field_class(@handle))
693
817
  end
694
818
  alias element_field_class get_element_field_class
819
+
820
+ def to_h
821
+ res = super
822
+ res[:element_field_class] = element_field_class.to_h
823
+ res
824
+ end
695
825
  end
696
826
  BTFieldClassArray = BTFieldClass::Array
697
827
 
@@ -721,6 +851,22 @@ module Babeltrace2
721
851
  end
722
852
  alias length get_length
723
853
  alias size get_length
854
+
855
+ def to_h
856
+ res = super
857
+ res[:length] = length
858
+ res
859
+ end
860
+
861
+ def self.from_h(trace_class, h, stream_class_h = nil)
862
+ o = self.new(trace_class: trace_class,
863
+ element_field_class: BTFieldClass.from_h(trace_class,
864
+ h[:element_field_class],
865
+ stream_class_h),
866
+ length: h[:length]).from_h(h)
867
+ h[:bt_field_class] = o
868
+ o
869
+ end
724
870
  end
725
871
  BTFieldClassArrayStatic = BTFieldClass::Array::Static
726
872
  BTFieldClass::TYPE_MAP[:BT_FIELD_CLASS_TYPE_STATIC_ARRAY] = [
@@ -744,6 +890,12 @@ module Babeltrace2
744
890
  BTFieldPath.new(handle, retain: true)
745
891
  end
746
892
  alias length_field_path get_length_field_path
893
+
894
+ def to_h
895
+ res = super
896
+ res[:length_field_path] = length_field_path.to_s
897
+ res
898
+ end
747
899
  end
748
900
  def initialize(handle = nil, retain: true, auto_release: true,
749
901
  trace_class: nil, element_field_class: nil, length_field_class: nil)
@@ -759,6 +911,22 @@ module Babeltrace2
759
911
  super(handle, retain: false)
760
912
  end
761
913
  end
914
+
915
+ def self.from_h(trace_class, h, stream_class_h = nil)
916
+ if (stream_class_h && h[:length_field_path])
917
+ length_field_class = BTStreamClass.locate_field_class(
918
+ BTFieldPath.path_from_s_to_h(h[:length_field_path]), stream_class_h)
919
+ else
920
+ length_field_class = nil
921
+ end
922
+ o = self.new(trace_class: trace_class,
923
+ element_field_class: BTFieldClass.from_h(trace_class,
924
+ h[:element_field_class],
925
+ stream_class_h),
926
+ length_field_class: length_field_class).from_h(h)
927
+ h[:bt_field_class] = o
928
+ o
929
+ end
762
930
  end
763
931
  BTFieldClassArrayDynamic = BTFieldClass::Array::Dynamic
764
932
  BTFieldClassArrayDynamicWithLengthField = BTFieldClass::Array::Dynamic::WithLengthField
@@ -845,7 +1013,8 @@ module Babeltrace2
845
1013
  alias field_class get_field_class
846
1014
 
847
1015
  def set_user_attributes(user_attributes)
848
- Babeltrace2.bt_field_class_structure_member_set_user_attributes(@handle, BTValue.from_value(user_attributes))
1016
+ bt_user_attributes = BTValue.from_value(user_attributes)
1017
+ Babeltrace2.bt_field_class_structure_member_set_user_attributes(@handle, bt_user_attributes)
849
1018
  self
850
1019
  end
851
1020
 
@@ -858,6 +1027,18 @@ module Babeltrace2
858
1027
  BTValueMap.new(Babeltrace2.bt_field_class_structure_member_borrow_user_attributes(@handle), retain: true)
859
1028
  end
860
1029
  alias user_attributes get_user_attributes
1030
+
1031
+ def to_h
1032
+ res = { name: name, field_class: field_class.to_h }
1033
+ user_attributes_value = user_attributes.value
1034
+ res[:user_attributes] = user_attributes_value if !user_attributes_value.empty?
1035
+ res
1036
+ end
1037
+
1038
+ def from_h(h)
1039
+ self.user_attributes = h[:user_attributes] if h[:user_attributes]
1040
+ self
1041
+ end
861
1042
  end
862
1043
 
863
1044
  def initialize(handle = nil, retain: true, auto_release: true,
@@ -911,6 +1092,23 @@ module Babeltrace2
911
1092
  end
912
1093
  end
913
1094
  alias [] get_member
1095
+
1096
+ def to_h
1097
+ res = super
1098
+ res[:members] = member_count.times.collect { |i| get_member_by_index(i).to_h }
1099
+ res
1100
+ end
1101
+
1102
+ def self.from_h(trace_class, h, stream_class_h = nil)
1103
+ o = self.new(trace_class: trace_class).from_h(h)
1104
+ h[:members].each_with_index { |v, i|
1105
+ o.append_member(v[:name],
1106
+ BTFieldClass.from_h(trace_class, v[:field_class], stream_class_h))
1107
+ o.get_member_by_index(i).from_h(v)
1108
+ }
1109
+ h[:bt_field_class] = o
1110
+ o
1111
+ end
914
1112
  end
915
1113
  BTFieldClassStructure = BTFieldClass::Structure
916
1114
  BTFieldClassStructureMember = BTFieldClass::Structure::Member
@@ -932,6 +1130,12 @@ module Babeltrace2
932
1130
  Babeltrace2.bt_field_class_option_borrow_field_class(@handle))
933
1131
  end
934
1132
  alias field_class get_field_class
1133
+
1134
+ def to_h
1135
+ res = super
1136
+ res[:field_class] = field_class.to_h
1137
+ res
1138
+ end
935
1139
  end
936
1140
  BTFieldClassOption = BTFieldClass::Option
937
1141
 
@@ -951,6 +1155,15 @@ module Babeltrace2
951
1155
  super(handle, retain: false)
952
1156
  end
953
1157
  end
1158
+
1159
+ def self.from_h(trace_class, h, stream_class_h = nil)
1160
+ o = self.new(trace_class: trace_class,
1161
+ optional_field_class: BTFieldClass.from_h(trace_class,
1162
+ h[:field_class],
1163
+ stream_class_h)).from_h(h)
1164
+ h[:bt_field_class] = o
1165
+ o
1166
+ end
954
1167
  end
955
1168
  BTFieldClassOptionWithoutSelectorField = BTFieldClass::Option::WithoutSelectorField
956
1169
  BTFieldClass::TYPE_MAP[:BT_FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR_FIELD] = [
@@ -968,6 +1181,12 @@ module Babeltrace2
968
1181
  BTFieldPath.new(handle, retain: true)
969
1182
  end
970
1183
  alias selector_field_path get_selector_field_path
1184
+
1185
+ def to_h
1186
+ res = super
1187
+ res[:selector_field_path] = selector_field_path.to_s if selector_field_path
1188
+ res
1189
+ end
971
1190
  end
972
1191
  BTFieldClassOptionWithSelectorField = BTFieldClass::Option::WithSelectorField
973
1192
 
@@ -1014,6 +1233,29 @@ module Babeltrace2
1014
1233
  @handle) != BT_FALSE
1015
1234
  end
1016
1235
  alias selector_is_reversed? selector_is_reversed
1236
+
1237
+ def to_h
1238
+ res = super
1239
+ res[:selector_is_reversed] = selector_is_reversed?
1240
+ res
1241
+ end
1242
+
1243
+ def self.from_h(trace_class, h, stream_class_h = nil)
1244
+ if (stream_class_h && h[:selector_field_path])
1245
+ selector_field_class = BTStreamClass.locate_field_class(
1246
+ BTFieldPath.path_from_s_to_h(h[:selector_field_path]), stream_class_h)
1247
+ else
1248
+ selector_field_class = nil
1249
+ end
1250
+ o = self.new(trace_class: trace_class,
1251
+ optional_field_class: BTFieldClass.from_h(trace_class,
1252
+ h[:field_class],
1253
+ stream_class_h),
1254
+ selector_field_class: selector_field_class).from_h(h)
1255
+ o.selector_is_reversed = h[:selector_is_reversed] if h[:selector_is_reversed]
1256
+ h[:bt_field_class] = o
1257
+ o
1258
+ end
1017
1259
  end
1018
1260
  BTFieldClassOptionWithSelectorFieldBool = BTFieldClass::Option::WithSelectorField::Bool
1019
1261
  BTFieldClass::TYPE_MAP[:BT_FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR_FIELD] = [
@@ -1051,6 +1293,29 @@ module Babeltrace2
1051
1293
  @handle), retain: true)
1052
1294
  end
1053
1295
  alias selector_ranges get_selector_ranges
1296
+
1297
+ def to_h
1298
+ res = super
1299
+ res[:selector_ranges] = selector_ranges.each.collect { |r| [r.lower, r.upper] }
1300
+ res
1301
+ end
1302
+
1303
+ def self.from_h(trace_class, h, stream_class_h = nil)
1304
+ if (stream_class_h && h[:selector_field_path])
1305
+ selector_field_class = BTStreamClass.locate_field_class(
1306
+ BTFieldPath.path_from_s_to_h(h[:selector_field_path]), stream_class_h)
1307
+ else
1308
+ selector_field_class = nil
1309
+ end
1310
+ o = self.new(trace_class: trace_class,
1311
+ optional_field_class: BTFieldClass.from_h(trace_class,
1312
+ h[:field_class],
1313
+ stream_class_h),
1314
+ selector_field_class: selector_field_class,
1315
+ ranges: h[:selector_ranges]).from_h(h)
1316
+ h[:bt_field_class] = o
1317
+ o
1318
+ end
1054
1319
  end
1055
1320
  BTFieldClassOptionWithSelectorFieldIntegerUnsigned = BTFieldClass::Option::WithSelectorField::IntegerUnsigned
1056
1321
  BTFieldClass::TYPE_MAP[:BT_FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD] = [
@@ -1088,6 +1353,29 @@ module Babeltrace2
1088
1353
  @handle), retain: true)
1089
1354
  end
1090
1355
  alias selector_ranges get_selector_ranges
1356
+
1357
+ def to_h
1358
+ res = super
1359
+ res[:selector_ranges] = selector_ranges.each.collect { |r| [r.lower, r.upper] }
1360
+ res
1361
+ end
1362
+
1363
+ def self.from_h(trace_class, h, stream_class_h = nil)
1364
+ if (stream_class_h && h[:selector_field_path])
1365
+ selector_field_class = BTStreamClass.locate_field_class(
1366
+ BTFieldPath.path_from_s_to_h(h[:selector_field_path]), stream_class_h)
1367
+ else
1368
+ selector_field_class = nil
1369
+ end
1370
+ o = self.new(trace_class: trace_class,
1371
+ optional_field_class: BTFieldClass.from_h(trace_class,
1372
+ h[:field_class],
1373
+ stream_class_h),
1374
+ selector_field_class: selector_field_class,
1375
+ ranges: h[:selector_ranges]).from_h(h)
1376
+ h[:bt_field_class] = o
1377
+ o
1378
+ end
1091
1379
  end
1092
1380
  BTFieldClassOptionWithSelectorFieldIntegerSigned = BTFieldClass::Option::WithSelectorField::IntegerSigned
1093
1381
  BTFieldClass::TYPE_MAP[:BT_FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR_FIELD] = [
@@ -1158,8 +1446,8 @@ module Babeltrace2
1158
1446
  alias field_class get_field_class
1159
1447
 
1160
1448
  def set_user_attributes(user_attributes)
1161
- Babeltrace2.bt_field_class_variant_option_set_user_attributes(@handle,
1162
- BTValue.from_value(user_attributes))
1449
+ bt_user_attributes = BTValue.from_value(user_attributes)
1450
+ Babeltrace2.bt_field_class_variant_option_set_user_attributes(@handle, bt_user_attributes)
1163
1451
  self
1164
1452
  end
1165
1453
 
@@ -1174,6 +1462,13 @@ module Babeltrace2
1174
1462
  @handle), retain: true)
1175
1463
  end
1176
1464
  alias user_attributes get_user_attributes
1465
+
1466
+ def to_h
1467
+ res = { name: name, field_class: field_class.to_h }
1468
+ user_attributes_value = user_attributes.value
1469
+ res[:user_attributes] = user_attributes_value if !user_attributes_value.empty?
1470
+ res
1471
+ end
1177
1472
  end
1178
1473
  end
1179
1474
  BTFieldClassVariantOption = BTFieldClass::Variant::Option
@@ -1259,6 +1554,13 @@ module Babeltrace2
1259
1554
  BTFieldPath.new(handle, retain: true)
1260
1555
  end
1261
1556
  alias selector_field_path get_selector_field_path
1557
+
1558
+ def to_h
1559
+ res = super
1560
+ res[:selector_field_path] = selector_field_path.to_s
1561
+ res
1562
+ end
1563
+
1262
1564
  module IntegerUnsigned
1263
1565
  class Option < BTFieldClassVariantOption
1264
1566
  def get_ranges
@@ -1267,6 +1569,12 @@ module Babeltrace2
1267
1569
  @handle), retain: true)
1268
1570
  end
1269
1571
  alias ranges get_ranges
1572
+
1573
+ def to_h
1574
+ res = super
1575
+ res[:ranges] = ranges.each.collect { |r| [r.lower, r.upper] }
1576
+ res
1577
+ end
1270
1578
  end
1271
1579
  include WithSelectorField
1272
1580
  def append_option(name, option_field_class, ranges)
@@ -1303,6 +1611,12 @@ module Babeltrace2
1303
1611
  @handle), retain: true)
1304
1612
  end
1305
1613
  alias ranges get_ranges
1614
+
1615
+ def to_h
1616
+ res = super
1617
+ res[:ranges] = ranges.each.collect { |r| [r.lower, r.upper] }
1618
+ res
1619
+ end
1306
1620
  end
1307
1621
  include WithSelectorField
1308
1622
  def append_option(name, option_field_class, ranges)
@@ -1395,6 +1709,36 @@ module Babeltrace2
1395
1709
  end
1396
1710
  alias [] get_option
1397
1711
 
1712
+ def to_h
1713
+ res = super
1714
+ res[:options] = option_count.times.collect { |i|
1715
+ get_option_by_index(i).to_h
1716
+ }
1717
+ res
1718
+ end
1719
+
1720
+ def self.from_h(trace_class, h, stream_class_h = nil)
1721
+ if (stream_class_h && h[:selector_field_path])
1722
+ selector_field_class = BTStreamClass.locate_field_class(
1723
+ BTFieldPath.path_from_s_to_h(h[:selector_field_path]), stream_class_h)
1724
+ else
1725
+ selector_field_class = nil
1726
+ end
1727
+ o = self.new(trace_class: trace_class,
1728
+ selector_field_class: selector_field_class).from_h(h)
1729
+ if selector_field_class
1730
+ h[:options].each { |v|
1731
+ o.append_option(v[:name],
1732
+ BTFieldClass.from_h(trace_class, v[:field_class], stream_class_h),
1733
+ v[:ranges]) }
1734
+ else
1735
+ h[:options].each { |v|
1736
+ o.append_option(v[:name],
1737
+ BTFieldClass.from_h(trace_class, v[:field_class], stream_class_h)) }
1738
+ end
1739
+ h[:bt_field_class] = o
1740
+ o
1741
+ end
1398
1742
  end
1399
1743
  BTFieldClassVariantWithoutSelectorField =
1400
1744
  BTFieldClass::Variant::WithoutSelectorField
@@ -85,6 +85,30 @@ module Babeltrace2
85
85
  }
86
86
  path
87
87
  end
88
+
89
+ def self.path_from_s_to_h(str)
90
+ str_orig = str
91
+ m = str.match(/\A(PACKET_CONTEXT|EVENT_COMMON_CONTEXT|EVENT_SPECIFIC_CONTEXT|EVENT_PAYLOAD)/)
92
+ raise "invalid path #{str}" if !m
93
+ path = [(m[1].downcase << "_field_class").to_sym]
94
+ str = str.sub(m[1], "")
95
+ while !str.empty?
96
+ case str
97
+ when /\A\[(\d+)\]/
98
+ path.push :members, $1.to_i, :field_class
99
+ str = str.sub("[#{$1}]", "")
100
+ when /\A->/
101
+ path.push :element_field_class
102
+ str = str.sub("->", "")
103
+ when /\A=>/
104
+ path.push :field_class
105
+ str = str.sub("=>", "")
106
+ else
107
+ raise "invalid path #{str_orig}"
108
+ end
109
+ end
110
+ path
111
+ end
88
112
  end
89
113
 
90
114
  BT_FIELD_PATH_ITEM_TYPE_INDEX = 1 << 0
@@ -421,7 +421,7 @@ module Babeltrace2
421
421
  :bt_field_string_append_status
422
422
 
423
423
  attach_function :bt_field_string_append_with_length,
424
- [ :bt_field_string_handle, :string, :uint64 ],
424
+ [ :bt_field_string_handle, :pointer, :uint64 ],
425
425
  :bt_field_string_append_status
426
426
 
427
427
  attach_function :bt_field_string_clear,
@@ -460,7 +460,9 @@ module Babeltrace2
460
460
 
461
461
  def append(value, length: nil)
462
462
  res = if length
463
- Babeltrace2.bt_field_string_append_with_length(@handle, value, length)
463
+ ptr = FFI::MemoryPointer.new(length)
464
+ ptr.write_bytes(value, 0, length)
465
+ Babeltrace2.bt_field_string_append_with_length(@handle, ptr, length)
464
466
  else
465
467
  Babeltrace2.bt_field_string_append(@handle, value)
466
468
  end
@@ -521,12 +523,25 @@ module Babeltrace2
521
523
  end
522
524
 
523
525
  def value
524
- each.collect { |e| e.value }
526
+ each.collect(&:value)
527
+ end
528
+
529
+ def set_value(values)
530
+ raise "invalid value size" if values.size != length
531
+ values.each_with_index { |e, i|
532
+ get_element_field_by_index(i).set_value(e)
533
+ }
534
+ self
535
+ end
536
+
537
+ def value=(values)
538
+ set_value(values)
539
+ values
525
540
  end
526
541
 
527
542
  def to_s
528
543
  s = "["
529
- s << each.collect { |e| e.to_s }.join(", ")
544
+ s << each.collect(&:to_s).join(", ")
530
545
  s << "]"
531
546
  end
532
547
  end
@@ -634,6 +649,11 @@ module Babeltrace2
634
649
  end
635
650
  alias [] get_member_field
636
651
 
652
+ def []=(member_field, value)
653
+ get_member_field(member_field).set_value(value)
654
+ value
655
+ end
656
+
637
657
  def each
638
658
  if block_given?
639
659
  get_member_count.times { |i|
@@ -653,6 +673,11 @@ module Babeltrace2
653
673
  v
654
674
  end
655
675
 
676
+ def field_names
677
+ klass = get_class
678
+ get_member_count.times.collect { |i| klass.get_member_by_index(i).name }
679
+ end
680
+
656
681
  def to_s
657
682
  s = "{"
658
683
  klass = get_class
@@ -400,7 +400,8 @@ module Babeltrace2
400
400
  alias discarded_packets_have_default_clock_snapshots? discarded_packets_have_default_clock_snapshots
401
401
 
402
402
  def set_user_attributes(user_attributes)
403
- Babeltrace2.bt_stream_class_set_user_attributes(@handle, BTValue.from_value(user_attributes))
403
+ bt_user_attributes = BTValue.from_value(user_attributes)
404
+ Babeltrace2.bt_stream_class_set_user_attributes(@handle, bt_user_attributes)
404
405
  self
405
406
  end
406
407
 
@@ -414,6 +415,87 @@ module Babeltrace2
414
415
  end
415
416
  alias user_attributes get_user_attributes
416
417
 
418
+ def to_h
419
+ res = {
420
+ id: id,
421
+ supports_packets: supports_packets? }
422
+ if supports_packets?
423
+ res[:packets_have_beginning_default_clock_snapshot] =
424
+ packets_have_beginning_default_clock_snapshot?
425
+ res[:packets_have_end_default_clock_snapshot] =
426
+ packets_have_end_default_clock_snapshot?
427
+ end
428
+ res[:supports_discarded_events] = supports_discarded_events?
429
+ res[:discarded_events_have_default_clock_snapshots] =
430
+ discarded_events_have_default_clock_snapshots? if supports_discarded_events?
431
+ if supports_packets?
432
+ res[:supports_discarded_packets] = supports_discarded_packets?
433
+ if supports_discarded_packets?
434
+ res[:discarded_packets_have_default_clock_snapshots] = discarded_packets_have_default_clock_snapshots?
435
+ end
436
+ end
437
+ if default_clock_class
438
+ res[:default_clock_class] = default_clock_class.to_h
439
+ end
440
+ if supports_packets? && packet_context_field_class
441
+ res[:packet_context_field_class] = packet_context_field_class.to_h
442
+ end
443
+ if event_common_context_field_class
444
+ res[:event_common_context_field_class] = event_common_context_field_class.to_h
445
+ end
446
+ res[:assigns_automatic_event_class_id] = assigns_automatic_event_class_id?
447
+ res[:assigns_automatic_stream_id] = assigns_automatic_stream_id?
448
+ res[:event_classes] = event_class_count.times.collect { |i|
449
+ get_event_class_by_index(i).to_h
450
+ }
451
+ user_attributes_value = user_attributes.value
452
+ res[:user_attributes] = user_attributes_value if !user_attributes_value.empty?
453
+ res
454
+ end
455
+
456
+ def self.from_h(self_component, trace_class, h)
457
+ id = trace_class.assigns_automatic_stream_class_id? ? nil : h[:id]
458
+ o = trace_class.create_stream_class(id: id)
459
+ o.default_clock_class = BTClockClass.from_h(self_component,
460
+ h[:default_clock_class]) if h[:default_clock_class]
461
+ o.set_supports_packets( h[:supports_packets],
462
+ with_beginning_default_clock_snapshot:
463
+ h[:packets_have_beginning_default_clock_snapshot],
464
+ with_end_default_clock_snapshot:
465
+ h[:packets_have_end_default_clock_snapshot])
466
+ o.set_supports_discarded_events(h[:supports_discarded_events],
467
+ with_default_clock_snapshots:
468
+ h[:discarded_events_have_default_clock_snapshots])
469
+ o.set_supports_discarded_packets(h[:supports_discarded_packets],
470
+ with_default_clock_snapshots:
471
+ h[:discarded_packets_have_default_clock_snapshots]) if h[:supports_packets]
472
+ o.packet_context_field_class = BTFieldClass.from_h(trace_class,
473
+ h[:packet_context_field_class], h) if h[:packet_context_field_class]
474
+ o.event_common_context_field_class = BTFieldClass.from_h(trace_class,
475
+ h[:event_common_context_field_class], h) if h[:event_common_context_field_class]
476
+ o.assigns_automatic_event_class_id = h[:assigns_automatic_event_class_id] unless h[:assigns_automatic_event_class_id].nil?
477
+ o.assigns_automatic_stream_id = h[:assigns_automatic_stream_id] unless h[:assigns_automatic_stream_id].nil?
478
+ h[:event_classes].each_with_index { |v, i|
479
+ h[:bt_current_event] = i;
480
+ BTEventClass.from_h(trace_class, o, v, h)
481
+ }
482
+ h.delete(:bt_current_event)
483
+ o.user_attributes = h[:user_attributes] if h[:user_attributes]
484
+ h[:bt_stream_class] = o
485
+ o
486
+ end
487
+
488
+ def self.locate_field_class(path, h)
489
+ case path[0]
490
+ when :event_payload_field_class
491
+ h[:event_classes][h[:bt_current_event]][:payload_field_class].dig(*path[1..-1])[:bt_field_class]
492
+ when :event_specific_context_field_class
493
+ h[:event_classes][h[:bt_current_event]][:specific_context_field_class].dig(*path[1..-1])[:bt_field_class]
494
+ else
495
+ h.dig(*path)[:bt_field_class]
496
+ end
497
+ end
498
+
417
499
  def create_stream(trace, id: nil)
418
500
  BTStream.new(stream_class: @handle, trace: trace, id: nil)
419
501
  end
@@ -116,7 +116,8 @@ module Babeltrace2
116
116
  alias name get_name
117
117
 
118
118
  def set_user_attributes(user_attributes)
119
- Babeltrace2.bt_stream_set_user_attributes(@handle, BTValue.from_value(user_attributes))
119
+ bt_user_attributes = BTValue.from_value(user_attributes)
120
+ Babeltrace2.bt_stream_set_user_attributes(@handle, bt_user_attributes)
120
121
  self
121
122
  end
122
123
 
@@ -146,7 +146,8 @@ module Babeltrace2
146
146
  alias assigns_automatic_stream_class_id? assigns_automatic_stream_class_id
147
147
 
148
148
  def set_user_attributes(user_attributes)
149
- Babeltrace2.bt_trace_class_set_user_attributes(@handle, BTValue.from_value(user_attributes))
149
+ bt_user_attributes = BTValue.from_value(user_attributes)
150
+ Babeltrace2.bt_trace_class_set_user_attributes(@handle, bt_user_attributes)
150
151
  self
151
152
  end
152
153
 
@@ -339,5 +340,24 @@ module Babeltrace2
339
340
  end
340
341
  alias create_variant_class create_field_class_variant
341
342
  alias create_variant create_field_class_variant
343
+
344
+ def to_h
345
+ res = {
346
+ assigns_automatic_stream_class_id: assigns_automatic_stream_class_id?,
347
+ stream_classes: stream_class_count.times.collect { |i| get_stream_class_by_index(i).to_h } }
348
+ user_attributes_value = user_attributes.value
349
+ res[:user_attributes] = user_attributes_value if !user_attributes_value.empty?
350
+ res
351
+ end
352
+
353
+ def self.from_h(self_component, h)
354
+ o = self_component.create_trace_class
355
+ o.assigns_automatic_stream_class_id = h[:assigns_automatic_stream_class_id] unless h[:assigns_automatic_stream_class_id].nil?
356
+ h[:stream_classes].each { |v| BTStreamClass.from_h(self_component, o, v) }
357
+ o.user_attributes = h[:user_attributes] if h[:user_attributes]
358
+ h[:bt_trace_class] = o
359
+ o
360
+ end
361
+
342
362
  end
343
363
  end
@@ -281,7 +281,8 @@ module Babeltrace2
281
281
  end
282
282
 
283
283
  def set_user_attributes(user_attributes)
284
- Babeltrace2.bt_trace_set_user_attributes(@handle, BTValue.from_value(user_attributes))
284
+ bt_user_attributes = BTValue.from_value(user_attributes)
285
+ Babeltrace2.bt_trace_set_user_attributes(@handle, bt_user_attributes)
285
286
  self
286
287
  end
287
288
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: babeltrace2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brice Videau
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-03 00:00:00.000000000 Z
11
+ date: 2022-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  - !ruby/object:Gem::Version
99
99
  version: '0'
100
100
  requirements: []
101
- rubygems_version: 3.1.2
101
+ rubygems_version: 3.3.5
102
102
  signing_key:
103
103
  specification_version: 4
104
104
  summary: Ruby Babeltrace 2 bindings