Class: Babeltrace2::BTMessageIterator

Inherits:
BTSharedObject show all
Defined in:
lib/babeltrace2/graph/message-iterator.rb

Direct Known Subclasses

BTSelfMessageIterator

Constant Summary collapse

CreateFromMessageIteratorStatus =
BTMessageIteratorCreateFromMessageIteratorStatus
CreateFromSinkComponentStatus =
BTMessageIteratorCreateFromSinkComponentStatus
NextStatus =
BTMessageIteratorNextStatus
CanSeekBeginningStatus =
BTMessageIteratorCanSeekBeginningStatus
SeekBeginningStatus =
BTMessageIteratorSeekBeginningStatus
CanSeekNSFromOriginStatus =
BTMessageIteratorCanSeekNSFromOriginStatus

Instance Attribute Summary

Attributes inherited from BTObject

#handle

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BTSharedObject

inherited, #initialize

Methods inherited from BTObject

#==, #initialize, #to_ptr

Constructor Details

This class inherits a constructor from Babeltrace2::BTSharedObject

Class Method Details

.create_from_message_iterator(self_message_iterator, port) ⇒ Object



165
166
167
168
169
170
# File 'lib/babeltrace2/graph/message-iterator.rb', line 165

def self.create_from_message_iterator(self_message_iterator, port)
  ptr = FFI::MemoryPointer.new(:pointer)
  res = Babeltrace2.bt_message_iterator_create_from_message_iterator(self_message_iterator, port, ptr)
  raise Babeltrace2.process_error(res) if res != :BT_MESSAGE_ITERATOR_CREATE_FROM_MESSAGE_ITERATOR_STATUS_OK
  BTMessageIterator.new(BTMessageIteratorHandle.new(ptr.read_pointer), retain: false)
end

.create_from_sink_component(self_component_sink, port) ⇒ Object



176
177
178
179
180
181
# File 'lib/babeltrace2/graph/message-iterator.rb', line 176

def self.create_from_sink_component(self_component_sink, port)
  ptr = FFI::MemoryPointer.new(:pointer)
  res = Babeltrace2.bt_message_iterator_create_from_sink_component(self_component_sink, port, ptr)
  raise Babeltrace2.process_error(res) if res != :BT_MESSAGE_ITERATOR_CREATE_FROM_SINK_COMPONENT_STATUS_OK
  BTMessageIterator.new(BTMessageIteratorHandle.new(ptr.read_pointer), retain: false)
end

Instance Method Details

#can_seek_beginningObject Also known as: can_seek_beginning?



210
211
212
213
214
215
216
217
# File 'lib/babeltrace2/graph/message-iterator.rb', line 210

def can_seek_beginning
  ptr = FFI::MemoryPointer.new(:int)
  while ((res = Babeltrace2.bt_message_iterator_can_seek_beginning(@handle, ptr)) == :BT_MESSAGE_ITERATOR_CAN_SEEK_BEGINNING_STATUS_AGAIN)
    sleep BT_SLEEP_TIME
  end
  raise Babeltrace2.process_error(res) if res != :BT_MESSAGE_ITERATOR_CAN_SEEK_BEGINNING_STATUS_OK
  ptr.read_int != BT_FALSE
end

#can_seek_forwardObject Also known as: can_seek_forward?



248
249
250
# File 'lib/babeltrace2/graph/message-iterator.rb', line 248

def can_seek_forward
  Babeltrace2.bt_message_iterator_can_seek_forward(@handle) != BT_FALSE
end

#can_seek_ns_from_origin(ns) ⇒ Object Also known as: can_seek_ns_from_origin?



229
230
231
232
233
234
235
236
# File 'lib/babeltrace2/graph/message-iterator.rb', line 229

def can_seek_ns_from_origin(ns)
  ptr = FFI::MemoryPointer.new(:int)
  while ((res = Babeltrace2.bt_message_iterator_can_seek_ns_from_origin(@handle, ns, ptr)) == :BT_MESSAGE_ITERATOR_CAN_SEEK_NS_FROM_ORIGIN_STATUS_AGAIN)
    sleep BT_SLEEP_TIME
  end
  raise Babeltrace2.process_error(res) if res != :BT_MESSAGE_ITERATOR_CAN_SEEK_NS_FROM_ORIGIN_STATUS_OK
  ptr.read_int != BT_FALSE
end

#create_message_iterator(port) ⇒ Object



172
173
174
# File 'lib/babeltrace2/graph/message-iterator.rb', line 172

def create_message_iterator(port)
  BTMessageIterator.create_from_message_iterator(self, port)
end

#get_componentObject Also known as: component



183
184
185
186
# File 'lib/babeltrace2/graph/message-iterator.rb', line 183

def get_component
  handle = Babeltrace2.bt_message_iterator_borrow_component(@handle)
  BTComponent.from_handle(handle)
end

#next_messagesObject



189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
# File 'lib/babeltrace2/graph/message-iterator.rb', line 189

def next_messages
  ptr_messages = FFI::MemoryPointer.new(:pointer)
  ptr_count = FFI::MemoryPointer.new(:uint64)
  while ((res = Babeltrace2.bt_message_iterator_next(@handle, ptr_messages, ptr_count)) == :BT_MESSAGE_ITERATOR_NEXT_STATUS_AGAIN)
    puts "waiting"
    sleep BT_SLEEP_TIME
  end
  case res
  when :BT_MESSAGE_ITERATOR_NEXT_STATUS_OK
    count = ptr_count.read_uint64
    messages = ptr_messages.read_pointer
    return messages.read_array_of_pointer(count).collect { |h|
      BTMessage.from_handle(BTMessageHandle.new(h), retain: false)
    }
  when :BT_MESSAGE_ITERATOR_NEXT_STATUS_END
    raise StopIteration
  else
    raise Babeltrace2.process_error(res)
  end
end

#seek_beginningObject



220
221
222
223
224
225
226
227
# File 'lib/babeltrace2/graph/message-iterator.rb', line 220

def seek_beginning
  raise "invalid operation" unless can_seek_beginning?
  while ((res = Babeltrace2.bt_message_iterator_seek_beginning(@handle)) == :BT_MESSAGE_ITERATOR_SEEK_BEGINNING_STATUS_AGAIN)
    sleep BT_SLEEP_TIME
  end
  raise Babeltrace2.process_error(res) if res != :BT_MESSAGE_ITERATOR_SEEK_BEGINNING_STATUS_OK
  self
end

#seek_ns_from_origin(ns) ⇒ Object



239
240
241
242
243
244
245
246
# File 'lib/babeltrace2/graph/message-iterator.rb', line 239

def seek_ns_from_origin(ns)
  raise "invalid operation" unless can_seek_ns_from_origin(ns)
  while ((res = Babeltrace2.bt_message_iterator_seek_ns_from_origin@handle, ns) == :BT_MESSAGE_ITERATOR_SEEK_NS_FROM_ORIGIN_STATUS_AGAIN)
    sleep BT_SLEEP_TIME
  end
  raise Babeltrace2.process_error(res) if res != :BT_MESSAGE_ITERATOR_SEEK_NS_FROM_ORIGIN_STATUS_OK
  self
end