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