class Hakuban::ObjectObserve
Attributes
descriptor[R]
Public Class Methods
new(local_node, descriptor, deserializer)
click to toggle source
# File lib/hakuban/hakuban.rb, line 253 def initialize(local_node, descriptor, deserializer) @local_node, @descriptor, @deserializer = local_node, descriptor, deserializer result = FFI::hakuban_object_observe_new(@local_node.local_node_pointer, descriptor.to_ffi) Hakuban::raise_if_error(result) @object_observe_pointer = ::FFI::AutoPointer.new(result[:object_observe_pointer], FFI::method(:hakuban_object_observe_drop)) @queues = {} end
Public Instance Methods
drop()
click to toggle source
# File lib/hakuban/hakuban.rb, line 284 def drop @object_observe_pointer.free @object_observe_pointer = nil @queues.clear end
inspect()
click to toggle source
# File lib/hakuban/hakuban.rb, line 280 def inspect "#<ObjectObserve #{@descriptor}>" end
manage(manager=nil)
click to toggle source
# File lib/hakuban/hakuban.rb, line 290 def manage(manager=nil) manager ||= ObjectManager.new manager.contract = self manager end
object_state()
click to toggle source
# File lib/hakuban/hakuban.rb, line 261 def object_state raise "Attempt to use after 'drop'" if not @object_observe_pointer ObjectObserveState.new(FFI::hakuban_object_observe_state_borrow(@object_observe_pointer), @deserializer) end
send_events_to(queue, *prefix)
click to toggle source
# File lib/hakuban/hakuban.rb, line 266 def send_events_to(queue, *prefix) @queues[queue] = EventQueue.new( queue, prefix, FFI::method(:hakuban_object_observe_changes_callback_register), @object_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 276 def stop_sending_objects_events_to(queue) @queues.delete(queue) end