class Libvirt::Event
Constants
- Opaque
Attributes
debug[RW]
Public Instance Methods
invoke_handle_callback(watch, fd, events, opaque)
click to toggle source
# File lib/libvirt/event.rb, line 26 def invoke_handle_callback(watch, fd, events, opaque) cb = opaque.cb op = opaque.opaque dbg { "INVOKE_HANDLE_CALLBACK watch=#{watch} fd=#{fd} events=#{events} op=#{op}" } cb.call(watch, fd, events, op) end
invoke_timeout_callback(timer, opaque)
click to toggle source
# File lib/libvirt/event.rb, line 33 def invoke_timeout_callback(timer, opaque) cb = opaque.cb op = opaque.opaque dbg { "INVOKE_TIMEOUT_CALLBACK timer=#{timer} op=#{op}" } cb.call(timer, op) end
register(add_handle:, update_handle:, remove_handle:, add_timer:, update_timer:, remove_timer:, schedule:)
click to toggle source
# File lib/libvirt/event.rb, line 66 def register(add_handle:, update_handle:, remove_handle:, add_timer:, update_timer:, remove_timer:, schedule:) # rubocop:disable Metrics/ParameterLists @add_handle = add_handle @update_handle = update_handle @remove_handle = remove_handle @add_timer = add_timer @update_timer = update_timer @remove_timer = remove_timer @schedule = schedule @add_handle_cb = FFI::Event.callback_function(:virEventAddHandleFunc, &method(:_add_handle)) @update_handle_cb = FFI::Event.callback_function(:virEventUpdateHandleFunc, &method(:_update_handle)) @remove_handle_cb = FFI::Event.callback_function(:virEventRemoveHandleFunc, &method(:_remove_handle)) @add_timer_cb = FFI::Event.callback_function(:virEventAddTimeoutFunc, &method(:_add_timer)) @update_timer_cb = FFI::Event.callback_function(:virEventUpdateTimeoutFunc, &method(:_update_timer)) @remove_timer_cb = FFI::Event.callback_function(:virEventRemoveTimeoutFunc, &method(:_remove_timer)) FFI::Event.virEventRegisterImpl( @add_handle_cb, @update_handle_cb, @remove_handle_cb, @add_timer_cb, @update_timer_cb, @remove_timer_cb ) @registered = true end
registered?()
click to toggle source
# File lib/libvirt/event.rb, line 40 def registered? @registered || false end
schedule_operation(&block)
click to toggle source
# File lib/libvirt/event.rb, line 62 def schedule_operation(&block) @schedule.call(&block) end
unregister()
click to toggle source
# File lib/libvirt/event.rb, line 44 def unregister @add_handle_cb = nil @update_handle_cb = nil @remove_handle_cb = nil @add_timer_cb = nil @update_timer_cb = nil @remove_timer_cb = nil @add_handle = nil @update_handle = nil @remove_handle = nil @add_timer = nil @update_timer = nil @remove_timer = nil @registered = false true end
Private Instance Methods
_add_handle(fd, event, cb, opaque, free_func)
click to toggle source
# File lib/libvirt/event.rb, line 95 def _add_handle(fd, event, cb, opaque, free_func) dbg { "ADD_HANDLE fd=#{fd}, #{event}=event, cb=#{cb}, opaque=#{opaque}, free_func=#{free_func}" } op = Opaque.new(cb, opaque, free_func) @add_handle.call(fd, event, op) end
_add_timer(timeout, cb, opaque, free_func)
click to toggle source
# File lib/libvirt/event.rb, line 118 def _add_timer(timeout, cb, opaque, free_func) dbg { "ADD_TIMER timeout=#{timeout}, cb=#{cb}, opaque=#{opaque}, free_func=#{free_func}" } op = Opaque.new(cb, opaque, free_func) @add_timer.call(timeout, op) end
_remove_handle(watch)
click to toggle source
# File lib/libvirt/event.rb, line 106 def _remove_handle(watch) dbg { "REMOVE_HANDLE watch=#{watch}" } op = @remove_handle.call(watch) free_func = op.free_func opaque = op.opaque schedule_operation do dbg { "REMOVE_HANDLE delayed free_func watch=#{watch}" } free_func.call(opaque) unless free_func.null? end 0 end
_remove_timer(timer)
click to toggle source
# File lib/libvirt/event.rb, line 129 def _remove_timer(timer) dbg { "REMOVE_TIMER timer=#{timer}" } op = @remove_timer.call(timer) free_func = op.free_func opaque = op.opaque schedule_operation do dbg { "REMOVE_TIMER async free_func timer=#{timer}" } free_func.call(opaque) unless free_func.null? end 0 end
_update_handle(watch, event)
click to toggle source
# File lib/libvirt/event.rb, line 101 def _update_handle(watch, event) dbg { "UPDATE_HANDLE watch=#{watch}, event=#{event}" } @update_handle.call(watch, event) end
_update_timer(timer, timeout)
click to toggle source
# File lib/libvirt/event.rb, line 124 def _update_timer(timer, timeout) dbg { "UPDATE_TIMER timer=#{timer}, timeout=#{timeout}" } @update_timer.call(timer, timeout) end
dbg(&block)
click to toggle source
# File lib/libvirt/event.rb, line 141 def dbg(&block) Util.log(:debug, 'Libvirt::Event', &block) end