The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Sys::Async::Virt::Callback - Client side proxy to remote LibVirt event source

VERSION

v0.0.1

SYNOPSIS

  my $cb = await $client->domain_event_register_any(
     $client->DOMAIN_EVENT_ID_LIFECYCLE );

  while (my $event = await $cb->next_event) {
     my $dom = $event->{msg}->{dom};

     # process the event
     if ($event->{event} == $dom->EVENT_STOPPED) {
        # Act on stopped domain
     }
  );

DESCRIPTION

This class provides access to events generated on the remote; its design allows linear handling of the generated events, by presenting the events as a stream of futures coming from the server.

Events are buffered until they're read off the callback object. No events will get lost. However, since the server continues its operations, a domain could disappear if an event's handling is delayed too long.

CONSTRUCTOR

new

Not to be called directly; used internally by methods returning instances of this class.

DESTRUCTOR

DESTROY

Unregisters the callback from the server if it hasn't already been cancelled; not to be called directly: Perl calls this method when the value goes out of scope.

METHODS

next_event

  my $f = $cb->next_event;

Returns a future which will resolve once the next event is available or until the callback is terminated using the cancel method.

Returns undef when the event stream has been cancelled and all pending events have been handled.

cancel

  my $f = $cb->cancel;

Returns a future which will resolve once the callback has been unregistered from the server and all pending events (on the client) have been cleared.

SEE ALSO

LibVirt, Sys::Virt

LICENSE AND COPYRIGHT

  Copyright (C) 2024 Erik Huelsmann

All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.