When implementing an event loop, the implementation must be a sub-class of the "Sys::Virt::EventImpl"
class. It must override these functions:
my $watch_id = $self->add_handle( $fd, $events, $callback, $opaque, $ff )
Registers $callback to be invoked for $events on $fd. Use "_run_handle_callback" to do the actual
invocation from the event loop (see "Callback helpers" below).
Next to the events explicitly indicated by $events, "Sys::Virt::Event::HANDLE_ERROR" and
"Sys::Virt::Event::HANDLE_HANGUP" should always trigger the callback.
Returns a positive integer $watch_id or -1 on error.
$self->update_handle($watch_id, $events)
Replaces the events currencly triggering $watch_id with $events.
my $ret = $self->remove_handle($watch_id)
Removes the $callback from the $fd.
Returns 0 on success or -1 on failure.
IMPORTANT This should also make sure that "_free_callback_opaque" is called after this function has
been executed: not doing so will prevent the connection from being garbage collected.
my $timer_id = $self->add_timeout($frequency, $callback, $opaque, $ff)
$self->update_timeout($timer_id, $frequency)
Replaces the interval on the timer with $frequency.
my $ret = $self->remove_timeout($timer_id)
Discards the timer.
Returns 0 on success or -1 on failure.
IMPORTANT This should also make sure that "_free_callback_opaque" is called after this function has
been executed: not doing so will prevent the connection from being garbage collected.
Callbackhelpers
$self->_run_handle_callback($watch_id, $fd, $events, $cb, $opaque)
A helper method for executing a callback in response to one of more $events on the file handle $fd.
The $watch number is the unique identifier associated with the file descriptor. The $cb and $opaque
parameters are the callback and data registered for the handle.
$self->_run_timeout_callback($timer_id, $cb, $opaque)
A helper method for executing a callback in response to the expiry of a timeout identified by $timer.
The $cb and $opaque parameters are the callback and data registered for the timeout.
$self->_free_callback_opaque($ff, $opaque)
A helper method for freeing the data associated with a callback. The $ff and $opaque parameters are
the callback and data registered for the handle/timeout.
IMPORTANT This helper must be called outside of any callbacks; that is after the "remove_handle" or
"remove_timeout" callbacks complete.