Class: Babeltrace2::BTStreamClass

Inherits:
BTSharedObject show all
Defined in:
lib/babeltrace2/trace-ir/stream-class.rb

Constant Summary collapse

SetNameStatus =
BTStreamClassSetNameStatus
SetDefaultClockClassStatus =
BTStreamClassSetDefaultClockClassStatus
SetFieldClassStatus =
BTStreamClassSetFieldClassStatus

Instance Attribute Summary

Attributes inherited from BTObject

#handle

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BTSharedObject

inherited

Methods inherited from BTObject

#==, #to_ptr

Constructor Details

#initialize(handle = nil, retain: true, auto_release: true, trace_class: nil, id: nil) ⇒ BTStreamClass

Returns a new instance of BTStreamClass.



193
194
195
196
197
198
199
200
201
202
203
204
205
206
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 193

def initialize(handle = nil, retain: true, auto_release: true,
               trace_class: nil, id: nil)
  if handle
    super(handle, retain: retain, auto_release: auto_release)
  else
    handle = if id
        Babeltrace2.bt_stream_class_create_with_id(trace_class, id)
      else
        Babeltrace2.bt_stream_class_create(trace_class)
      end
    raise Babeltrace2.process_error if handle.null?
    super(handle, retain: false)
  end
end

Class Method Details

.from_h(self_component, trace_class, h) ⇒ Object



455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 455

def self.from_h(self_component, trace_class, h)
  id = trace_class.assigns_automatic_stream_class_id? ? nil : h[:id]
  o = trace_class.create_stream_class(id: id)
  o.default_clock_class = BTClockClass.from_h(self_component,
    h[:default_clock_class]) if h[:default_clock_class]
  o.set_supports_packets( h[:supports_packets],
    with_beginning_default_clock_snapshot:
      h[:packets_have_beginning_default_clock_snapshot],
    with_end_default_clock_snapshot:
      h[:packets_have_end_default_clock_snapshot])
  o.set_supports_discarded_events(h[:supports_discarded_events],
    with_default_clock_snapshots:
      h[:discarded_events_have_default_clock_snapshots])
  o.set_supports_discarded_packets(h[:supports_discarded_packets],
    with_default_clock_snapshots:
      h[:discarded_packets_have_default_clock_snapshots]) if h[:supports_packets]
  o.packet_context_field_class = BTFieldClass.from_h(trace_class,
    h[:packet_context_field_class], h) if h[:packet_context_field_class]
  o.event_common_context_field_class = BTFieldClass.from_h(trace_class,
    h[:event_common_context_field_class], h) if h[:event_common_context_field_class]
  o.assigns_automatic_event_class_id = h[:assigns_automatic_event_class_id] unless h[:assigns_automatic_event_class_id].nil?
  o.assigns_automatic_stream_id = h[:assigns_automatic_stream_id] unless h[:assigns_automatic_stream_id].nil?
  h[:event_classes].each_with_index { |v, i|
    h[:bt_current_event] = i;
    BTEventClass.from_h(trace_class, o, v, h)
  }
  h.delete(:bt_current_event)
  o.user_attributes = h[:user_attributes] if h[:user_attributes]
  h[:bt_stream_class] = o
  o
end

.locate_field_class(path, h) ⇒ Object



487
488
489
490
491
492
493
494
495
496
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 487

def self.locate_field_class(path, h)
  case path[0]
  when :event_payload_field_class
    h[:event_classes][h[:bt_current_event]][:payload_field_class].dig(*path[1..-1])[:bt_field_class]
  when :event_specific_context_field_class
    h[:event_classes][h[:bt_current_event]][:specific_context_field_class].dig(*path[1..-1])[:bt_field_class]
  else
    h.dig(*path)[:bt_field_class]
  end
end

Instance Method Details

#assigns_automatic_event_class_idObject Also known as: assigns_automatic_event_class_id?



320
321
322
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 320

def assigns_automatic_event_class_id
  Babeltrace2.bt_stream_class_assigns_automatic_event_class_id(@handle) != BT_FALSE
end

#assigns_automatic_event_class_id=(assigns_automatic_event_class_id) ⇒ Object



315
316
317
318
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 315

def assigns_automatic_event_class_id=(assigns_automatic_event_class_id)
  set_assigns_automatic_event_class_id(assigns_automatic_event_class_id)
  assigns_automatic_event_class_id
end

#assigns_automatic_stream_idObject Also known as: assigns_automatic_stream_id?



336
337
338
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 336

def assigns_automatic_stream_id
  Babeltrace2.bt_stream_class_assigns_automatic_stream_id(@handle) != BT_FALSE
end

#assigns_automatic_stream_id=(assigns_automatic_stream_id) ⇒ Object



331
332
333
334
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 331

def assigns_automatic_stream_id=(assigns_automatic_stream_id)
  set_assigns_automatic_stream_id(assigns_automatic_stream_id)
  assigns_automatic_stream_id
end

#create_event_class(id: nil) ⇒ Object



502
503
504
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 502

def create_event_class(id: nil)
  BTEventClass.new(stream_class: @handle, id: nil)
end

#create_stream(trace, id: nil) ⇒ Object



498
499
500
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 498

def create_stream(trace, id: nil)
  BTStream.new(stream_class: @handle, trace: trace, id: nil)
end

#default_clock_class=(clock_class) ⇒ Object



259
260
261
262
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 259

def default_clock_class=(clock_class)
  set_default_clock_class(clock_class)
  clock_class
end

#discarded_events_have_default_clock_snapshotsObject Also known as: discarded_events_have_default_clock_snapshots?



379
380
381
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 379

def discarded_events_have_default_clock_snapshots
  Babeltrace2.bt_stream_class_discarded_events_have_default_clock_snapshots(@handle) != BT_FALSE
end

#discarded_packets_have_default_clock_snapshotsObject Also known as: discarded_packets_have_default_clock_snapshots?



397
398
399
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 397

def discarded_packets_have_default_clock_snapshots
  Babeltrace2.bt_stream_class_discarded_packets_have_default_clock_snapshots(@handle) != BT_FALSE
end

#event_common_context_field_class=(field_class) ⇒ Object



297
298
299
300
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 297

def event_common_context_field_class=(field_class)
  set_event_common_context_field_class(field_class)
  field_class
end

#get_default_clock_classObject Also known as: default_clock_class



264
265
266
267
268
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 264

def get_default_clock_class
  handle = Babeltrace2.bt_stream_class_borrow_default_clock_class(@handle)
  return nil if handle.null?
  BTClockClass.new(handle, retain: true)
end

#get_event_class_by_id(id) ⇒ Object



226
227
228
229
230
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 226

def get_event_class_by_id(id)
  handle = Babeltrace2.bt_stream_class_borrow_event_class_by_id(@handle, id)
  return nil if handle.null?
  BTEventClass.new(handle, retain: true)
end

#get_event_class_by_index(index) ⇒ Object



218
219
220
221
222
223
224
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 218

def get_event_class_by_index(index)
  count = event_class_count
  index += count if count < 0
  return nil if index >= count || index < 0
  BTEventClass.new(
    Babeltrace2.bt_stream_class_borrow_event_class_by_index(@handle, index), retain: true)
end

#get_event_class_countObject Also known as: event_class_count



213
214
215
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 213

def get_event_class_count
  Babeltrace2.bt_stream_class_get_event_class_count(@handle)
end

#get_event_common_context_field_classObject Also known as: event_common_context_field_class



302
303
304
305
306
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 302

def get_event_common_context_field_class
  handle = Babeltrace2.bt_stream_class_borrow_event_common_context_field_class(@handle)
  return nil if handle.null?
  BTFieldClass.from_handle(handle)
end

#get_idObject Also known as: id



232
233
234
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 232

def get_id
  Babeltrace2.bt_stream_class_get_id(@handle)
end

#get_nameObject Also known as: name



248
249
250
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 248

def get_name
  Babeltrace2.bt_stream_class_get_name(@handle)
end

#get_packet_context_field_classObject Also known as: packet_context_field_class



283
284
285
286
287
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 283

def get_packet_context_field_class
  handle = Babeltrace2.bt_stream_class_borrow_packet_context_field_class(@handle)
  return nil if handle.null?
  BTFieldClass.from_handle(handle)
end

#get_trace_classObject Also known as: trace_class



208
209
210
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 208

def get_trace_class
  BTTraceClass.new(Babeltrace2.bt_stream_class_borrow_trace_class(@handle), retain: true)
end

#get_user_attributesObject Also known as: user_attributes



412
413
414
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 412

def get_user_attributes
  BTValueMap.new(Babeltrace2.bt_stream_class_borrow_user_attributes(@handle), retain: true)
end

#name=(name) ⇒ Object



243
244
245
246
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 243

def name=(name)
  set_name(name)
  name
end

#packet_context_field_class=(field_class) ⇒ Object



278
279
280
281
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 278

def packet_context_field_class=(field_class)
  set_packet_context_field_class(field_class)
  field_class
end

#packets_have_beginning_default_clock_snapshotObject Also known as: packets_have_beginning_default_clock_snapshot?



356
357
358
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 356

def packets_have_beginning_default_clock_snapshot
  Babeltrace2.bt_stream_class_packets_have_beginning_default_clock_snapshot(@handle) != BT_FALSE
end

#packets_have_end_default_clock_snapshotObject Also known as: packets_have_end_default_clock_snapshot?



361
362
363
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 361

def packets_have_end_default_clock_snapshot
  Babeltrace2.bt_stream_class_packets_have_end_default_clock_snapshot(@handle) != BT_FALSE
end

#set_assigns_automatic_event_class_id(assigns_automatic_event_class_id) ⇒ Object



309
310
311
312
313
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 309

def set_assigns_automatic_event_class_id(assigns_automatic_event_class_id)
  Babeltrace2.bt_stream_class_set_assigns_automatic_event_class_id(
    @handle, assigns_automatic_event_class_id ? BT_TRUE : BT_FALSE)
  self
end

#set_assigns_automatic_stream_id(assigns_automatic_stream_id) ⇒ Object



325
326
327
328
329
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 325

def set_assigns_automatic_stream_id(assigns_automatic_stream_id)
  Babeltrace2.bt_stream_class_set_assigns_automatic_stream_id(
    @handle, assigns_automatic_stream_id ? BT_TRUE : BT_FALSE)
  self
end

#set_default_clock_class(clock_class) ⇒ Object



253
254
255
256
257
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 253

def set_default_clock_class(clock_class)
  res = Babeltrace2.bt_stream_class_set_default_clock_class(@handle, clock_class)
  raise Babeltrace2.process_error(res) if res != :BT_STREAM_CLASS_SET_DEFAULT_CLOCK_CLASS_STATUS_OK
  self
end

#set_event_common_context_field_class(field_class) ⇒ Object



290
291
292
293
294
295
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 290

def set_event_common_context_field_class(field_class)
  res = Babeltrace2.bt_stream_class_set_event_common_context_field_class(
          @handle, field_class)
  raise Babeltrace2.process_error(res) if res != :BT_STREAM_CLASS_SET_FIELD_CLASS_STATUS_OK
  self
end

#set_name(name) ⇒ Object



237
238
239
240
241
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 237

def set_name(name)
  res = Babeltrace2.bt_stream_class_set_name(@handle, name)
  raise Babeltrace2.process_error(res) if res != :BT_STREAM_CLASS_SET_NAME_STATUS_OK
  self
end

#set_packet_context_field_class(field_class) ⇒ Object



271
272
273
274
275
276
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 271

def set_packet_context_field_class(field_class)
  res = Babeltrace2.bt_stream_class_set_packet_context_field_class(
          @handle, field_class)
  raise Babeltrace2.process_error(res) if res != :BT_STREAM_CLASS_SET_FIELD_CLASS_STATUS_OK
  self
end

#set_supports_discarded_events(supports_discarded_events, with_default_clock_snapshots: false) ⇒ Object



366
367
368
369
370
371
372
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 366

def set_supports_discarded_events(supports_discarded_events,
                                  with_default_clock_snapshots: false)
  Babeltrace2.bt_stream_class_set_supports_discarded_events(
    @handle, supports_discarded_events ? BT_TRUE : BT_FALSE,
    with_default_clock_snapshots ? BT_TRUE : BT_FALSE)
  self
end

#set_supports_discarded_packets(supports_discarded_packets, with_default_clock_snapshots: false) ⇒ Object



384
385
386
387
388
389
390
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 384

def set_supports_discarded_packets(supports_discarded_packets,
                                  with_default_clock_snapshots: false)
  Babeltrace2.bt_stream_class_set_supports_discarded_packets(
    @handle, supports_discarded_packets ? BT_TRUE : BT_FALSE,
    with_default_clock_snapshots ? BT_TRUE : BT_FALSE)
  self
end

#set_supports_packets(supports_packets, with_beginning_default_clock_snapshot: false, with_end_default_clock_snapshot: false) ⇒ Object



341
342
343
344
345
346
347
348
349
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 341

def set_supports_packets(supports_packets,
                         with_beginning_default_clock_snapshot: false,
                         with_end_default_clock_snapshot: false)
  Babeltrace2.bt_stream_class_set_supports_packets(@handle,
    supports_packets ? BT_TRUE : BT_FALSE,
    with_beginning_default_clock_snapshot ? BT_TRUE : BT_FALSE,
    with_end_default_clock_snapshot ? BT_TRUE : BT_FALSE)
  self
end

#set_user_attributes(user_attributes) ⇒ Object



402
403
404
405
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 402

def set_user_attributes(user_attributes)
  Babeltrace2.bt_stream_class_set_user_attributes(@handle, BTValue.from_value(user_attributes))
  self
end

#supports_discarded_eventsObject Also known as: supports_discarded_events?



374
375
376
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 374

def supports_discarded_events
  Babeltrace2.bt_stream_class_supports_discarded_events(@handle) != BT_FALSE
end

#supports_discarded_packetsObject Also known as: supports_discarded_packets?



392
393
394
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 392

def supports_discarded_packets
  Babeltrace2.bt_stream_class_supports_discarded_packets(@handle) != BT_FALSE
end

#supports_packetsObject Also known as: supports_packets?



351
352
353
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 351

def supports_packets
  Babeltrace2.bt_stream_class_supports_packets(@handle) != BT_FALSE
end

#to_hObject



417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 417

def to_h
  res = {
    id: id,
    supports_packets: supports_packets? }
  if supports_packets?
    res[:packets_have_beginning_default_clock_snapshot] =
      packets_have_beginning_default_clock_snapshot?
    res[:packets_have_end_default_clock_snapshot] =
      packets_have_end_default_clock_snapshot?
  end
  res[:supports_discarded_events] = supports_discarded_events?
  res[:discarded_events_have_default_clock_snapshots] =
    discarded_events_have_default_clock_snapshots? if supports_discarded_events?
  if supports_packets?
    res[:supports_discarded_packets] = supports_discarded_packets?
    if supports_discarded_packets?
      res[:discarded_packets_have_default_clock_snapshots] = discarded_packets_have_default_clock_snapshots?
    end
  end
  if default_clock_class
    res[:default_clock_class] = default_clock_class.to_h
  end
  if supports_packets? && packet_context_field_class
    res[:packet_context_field_class] = packet_context_field_class.to_h
  end
  if event_common_context_field_class
    res[:event_common_context_field_class] = event_common_context_field_class.to_h
  end
  res[:assigns_automatic_event_class_id] = assigns_automatic_event_class_id?
  res[:assigns_automatic_stream_id] = assigns_automatic_stream_id?
  res[:event_classes] = event_class_count.times.collect { |i|
    get_event_class_by_index(i).to_h
  }
  user_attributes_value = user_attributes.value
  res[:user_attributes] = user_attributes_value if !user_attributes_value.empty?
  res
end

#user_attributes=(user_attributes) ⇒ Object



407
408
409
410
# File 'lib/babeltrace2/trace-ir/stream-class.rb', line 407

def user_attributes=(user_attributes)
  set_user_attributes(user_attributes)
  user_attributes
end