class Hakuban::TagExpose

Attributes

descriptor[R]

Public Class Methods

new(local_node, descriptor, serializer) click to toggle source
# File lib/hakuban/hakuban.rb, line 452
def initialize(local_node, descriptor, serializer)
        @local_node, @descriptor, @serializer = local_node, descriptor, serializer
        result = FFI::hakuban_tag_expose_new(@local_node.local_node_pointer, descriptor.to_ffi)
        Hakuban::raise_if_error(result)
        @tag_expose_pointer = ::FFI::AutoPointer.new(result[:tag_expose_pointer], FFI::method(:hakuban_tag_expose_drop))
        @queues = {}
end

Public Instance Methods

drop() click to toggle source
# File lib/hakuban/hakuban.rb, line 494
def drop
        @tag_expose_pointer.free
        @tag_expose_pointer = nil
        @queues.clear
end
manage(manager=nil) click to toggle source
# File lib/hakuban/hakuban.rb, line 500
def manage(manager=nil)
        manager ||= ObjectManager.new
        manager.contract = self
        manager
end
object_descriptors() click to toggle source
# File lib/hakuban/hakuban.rb, line 460
def object_descriptors
        raise "Attempt to use after 'drop'"  if not @tag_expose_pointer
        result = FFI::hakuban_tag_expose_object_descriptors_borrow(@tag_expose_pointer)
        ret = result.descriptors.map { |raw_descriptor| ObjectDescriptor::from_ffi(raw_descriptor) }
        FFI::hakuban_object_descriptors_return(result)
        ret
end
send_events_to(*params) click to toggle source
# File lib/hakuban/hakuban.rb, line 476
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 480
def send_objects_events_to(queue, *prefix)
        @queues[queue] = EventQueue.new(
                queue,
                prefix,
                FFI::method(:hakuban_tag_expose_objects_changes_callback_register), 
                @tag_expose_pointer, 
                FFI::method(:hakuban_object_callback_unregister)
        )
end
set_object_state(object_descriptor, version, data, data_type = []) click to toggle source
# File lib/hakuban/hakuban.rb, line 468
def set_object_state(object_descriptor, version, data, data_type = [])
        raise "Attempt to use after 'drop'"  if not @tag_expose_pointer
        serialized_data_type, serialized_data = @serializer.call(data_type, data)
        result = FFI::hakuban_tag_expose_object_state(@tag_expose_pointer, object_descriptor.to_ffi, FFI::FFIObjectExposeState.construct(version, serialized_data_type, serialized_data))
        Hakuban::raise_if_error(result)
        result[:changed] == 1
end
stop_sending_objects_events_to(queue) click to toggle source
# File lib/hakuban/hakuban.rb, line 490
def stop_sending_objects_events_to(queue)
        @queues.delete(queue)
end