class Hakuban::ObjectExpose
Attributes
descriptor[R]
Public Class Methods
new(local_node, descriptor, serializer)
click to toggle source
# File lib/hakuban/hakuban.rb, line 303 def initialize(local_node, descriptor, serializer) @local_node, @descriptor, @serializer = local_node, descriptor, serializer result = FFI::hakuban_object_expose_new(@local_node.local_node_pointer, descriptor.to_ffi) Hakuban::raise_if_error(result) @object_expose_pointer = ::FFI::AutoPointer.new(result[:object_expose_pointer], FFI::method(:hakuban_object_expose_drop)) @queues = {} end
Public Instance Methods
assigned()
click to toggle source
# File lib/hakuban/hakuban.rb, line 319 def assigned raise "Attempt to use after 'drop'" if not @object_expose_pointer FFI::hakuban_object_expose_assigned(@object_expose_pointer) == 1 end
drop()
click to toggle source
# File lib/hakuban/hakuban.rb, line 342 def drop @object_expose_pointer.free @object_expose_pointer = nil @queues.clear end
inspect()
click to toggle source
# File lib/hakuban/hakuban.rb, line 338 def inspect "#<ObjectExpose #{@descriptor}>" end
manage(manager=nil)
click to toggle source
# File lib/hakuban/hakuban.rb, line 348 def manage(manager=nil) manager ||= ObjectManager.new manager.contract = self manager end
send_events_to(queue, *prefix)
click to toggle source
# File lib/hakuban/hakuban.rb, line 324 def send_events_to(queue, *prefix) @queues[queue] = EventQueue.new( queue, prefix, FFI::method(:hakuban_object_expose_changes_callback_register), @object_expose_pointer, FFI::method(:hakuban_object_callback_unregister) ) end
set_object_state(version, data, data_type = [])
click to toggle source
# File lib/hakuban/hakuban.rb, line 311 def set_object_state(version, data, data_type = []) raise "Attempt to use after 'drop'" if not @object_expose_pointer serialized_data_type, serialized_data = @serializer.call(data_type, data) result = FFI::hakuban_object_expose_state(@object_expose_pointer, 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 334 def stop_sending_objects_events_to(queue) @queues.delete(queue) end