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