class Hakuban::TagObserve
Attributes
descriptor[R]
Public Class Methods
new(local_node, descriptor, deserializer)
click to toggle source
# File lib/hakuban/hakuban.rb, line 391 def initialize(local_node, descriptor, deserializer) @local_node, @descriptor, @deserializer = local_node, descriptor, deserializer result = FFI::hakuban_tag_observe_new(@local_node.local_node_pointer, @descriptor.to_ffi) Hakuban::raise_if_error(result) @tag_observe_pointer = ::FFI::AutoPointer.new(result[:tag_observe_pointer], FFI::method(:hakuban_tag_observe_drop)) @queues = {} end
Public Instance Methods
drop()
click to toggle source
# File lib/hakuban/hakuban.rb, line 433 def drop @tag_observe_pointer.free @tag_observe_pointer = nil @queues.clear end
manage(manager=nil)
click to toggle source
# File lib/hakuban/hakuban.rb, line 439 def manage(manager=nil) manager ||= ObjectManager.new manager.contract = self manager end
object_descriptors()
click to toggle source
# File lib/hakuban/hakuban.rb, line 399 def object_descriptors raise "Attempt to use after 'drop'" if not @tag_observe_pointer result = FFI::hakuban_tag_observe_object_descriptors_borrow(@tag_observe_pointer) ret = result.descriptors.map { |raw_descriptor| ObjectDescriptor::from_ffi(raw_descriptor) } FFI::hakuban_object_descriptors_return(result) ret end
object_state(object_descriptor)
click to toggle source
# File lib/hakuban/hakuban.rb, line 407 def object_state(object_descriptor) raise "Attempt to use after 'drop'" if not @tag_observe_pointer result = FFI::hakuban_tag_observe_object_state_borrow(@tag_observe_pointer, object_descriptor.to_ffi) return nil if result[:error] == 4 Hakuban::raise_if_error(result) ObjectObserveState.new(result[:state], @deserializer) end
send_events_to(*params)
click to toggle source
# File lib/hakuban/hakuban.rb, line 415 def send_events_to(*params) self.send_objects_events_to(*params) end
send_objects_events_to(queue, *prefix)
click to toggle source
# File lib/hakuban/hakuban.rb, line 419 def send_objects_events_to(queue, *prefix) @queues[queue] = EventQueue.new( queue, prefix, FFI::method(:hakuban_tag_observe_objects_changes_callback_register), @tag_observe_pointer, FFI::method(:hakuban_object_callback_unregister) ) end
stop_sending_objects_events_to(queue)
click to toggle source
# File lib/hakuban/hakuban.rb, line 429 def stop_sending_objects_events_to(queue) @queues.delete(queue) end