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