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