class Hakuban::EventQueue

Public Class Methods

generate_callback(queue, prefix) click to toggle source
# File lib/hakuban/hakuban.rb, line 229
def self.generate_callback(queue, prefix)
        proc { |_userdata, ffi_descriptor, ffi_action|
                #puts "Callback for queue: #{queue}"
                action = Hakuban::action_int_to_symbol(ffi_action)
                descriptor = ObjectDescriptor.from_ffi(ffi_descriptor)
                queue << prefix + [action, descriptor]
        }
end
generate_unregister(unregister_method, callback) click to toggle source
# File lib/hakuban/hakuban.rb, line 238
def self.generate_unregister(unregister_method, callback)
        proc { |pointer|
                #puts "Dropping callback pointer: #{pointer}"
                callback # probably not needed, but I want to be sure this is captured
                unregister_method.call(pointer)
        }
end
new(queue, prefix, register_method, pointer, unregister_method) click to toggle source
# File lib/hakuban/hakuban.rb, line 218
def initialize(queue, prefix, register_method, pointer, unregister_method)
        @queue = queue
        @callback = EventQueue.generate_callback(@queue, prefix)
        @registered_callback_pointer = ::FFI::AutoPointer.new(
                register_method.call(pointer, @callback, ::FFI::Pointer::NULL), 
                EventQueue.generate_unregister(unregister_method, @callback)
        )
        #puts "Allocated callback pointer: #{@registered_callback_pointer}"
        #puts "Allocated callback queue: #{@events}"
end