%PDF- %PDF-
Direktori : /lib/x86_64-linux-gnu/perl5/5.38/Net/DBus/ |
Current File : //lib/x86_64-linux-gnu/perl5/5.38/Net/DBus/Annotation.pm |
# -*- perl -*- # # Copyright (C) 2006-2011 Daniel P. Berrange # # This program is free software; You can redistribute it and/or modify # it under the same terms as Perl itself. Either: # # a) the GNU General Public License as published by the Free # Software Foundation; either version 2, or (at your option) any # later version, # # or # # b) the "Artistic License" # # The file "COPYING" distributed along with this file provides full # details of the terms and conditions of the two licenses. =pod =head1 NAME Net::DBus::Annotation - annotations for changing behaviour of APIs =head1 SYNOPSIS use Net::DBus::Annotation qw(:call); my $object = $service->get_object("/org/example/systemMonitor"); # Block until processes are listed my $processes = $object->list_processes("someuser"); # Just throw away list of processes, pretty pointless # in this example, but useful if the method doesn't have # a return value $object->list_processes(dbus_call_noreply, "someuser"); # List processes & get on with other work until # the list is returned. my $asyncreply = $object->list_processes(dbus_call_async, "someuser"); ... some time later... my $processes = $asyncreply->get_data; # List processes, with a shorter 10 second timeout, instead of # the default 60 seconds my $object->list_processes(dbus_call_timeout, 10 * 1000, "someuser"); =head1 DESCRIPTION This module provides a number of annotations which will be useful when dealing with the DBus APIs. There are annotations for switching remote calls between sync, async and no-reply mode. More annotations may be added over time. =head1 METHODS =over 4 =cut package Net::DBus::Annotation; use strict; use warnings; our $CALL_SYNC = "sync"; our $CALL_ASYNC = "async"; our $CALL_NOREPLY = "noreply"; our $CALL_TIMEOUT = "timeout"; bless \$CALL_SYNC, __PACKAGE__; bless \$CALL_ASYNC, __PACKAGE__; bless \$CALL_NOREPLY, __PACKAGE__; bless \$CALL_TIMEOUT, __PACKAGE__; require Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw(dbus_call_sync dbus_call_async dbus_call_noreply dbus_call_timeout); our %EXPORT_TAGS = (call => [qw(dbus_call_sync dbus_call_async dbus_call_noreply dbus_call_timeout)]); =item dbus_call_sync Requests that a method call be performed synchronously, waiting for the reply or error return to be received before continuing. =cut sub dbus_call_sync() { return \$CALL_SYNC; } =item dbus_call_async Requests that a method call be performed a-synchronously, returning a pending call object, which will collect the reply when it eventually arrives. =cut sub dbus_call_async() { return \$CALL_ASYNC; } =item dbus_call_noreply Requests that a method call be performed a-synchronously, discarding any possible reply or error message. =cut sub dbus_call_noreply() { return \$CALL_NOREPLY; } =item dbus_call_timeout Indicates that the next parameter for the method call will specify the time to wait for a reply in milliseconds. If omitted, then the default timeout for the object will be used =cut sub dbus_call_timeout() { return \$CALL_TIMEOUT; } 1; =pod =back =head1 AUTHOR Daniel Berrange <dan@berrange.com> =head1 COPYRIGHT Copright (C) 2006-2011, Daniel Berrange. =head1 SEE ALSO L<Net::DBus>, L<Net::DBus::RemoteObject> =cut