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