/usr/lib/perl5/Net/DBus/Callback.pm is in libnet-dbus-perl 1.0.0-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | # -*- perl -*-
#
# Copyright (C) 2004-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::Callback - a callback for receiving reactor events
=head1 SYNOPSIS
use Net::DBus::Callback;
# Assume we have a 'terminal' object and its got a method
# to be invoked everytime there is input on its terminal.
#
# To create a callback to invoke this method one might use
my $cb = Net::DBus::Callback->new(object => $terminal,
method => "handle_stdio");
# Whatever is monitoring the stdio channel, would then
# invoke the callback, perhaps passing in a parameter with
# some 'interesting' data, such as number of bytes available
$cb->invoke($nbytes)
#... which results in a call to
# $terminal->handle_stdio($nbytes)
=head1 DESCRIPTION
This module provides a simple container for storing details
about a callback to be invoked at a later date. It is used
when registering to receive events from the L<Net::DBus::Reactor>
class. NB use of this module in application code is no longer
neccessary and it remains purely for backwards compatability.
Instead you can simply pass a subroutine code reference in
any place where a callback is desired.
=head1 METHODS
=over 4
=cut
package Net::DBus::Callback;
use 5.006;
use strict;
use warnings;
=item my $cb = Net::DBus::Callback->new(method => $name, [args => \@args])
Creates a new callback object, for invoking a plain old function. The C<method>
parameter should be the fully qualified function name to invoke, including the
package name. The optional C<args> parameter is an array reference of parameters
to be pass to the callback, in addition to those passed into the C<invoke> method.
=item my $cb = Net::DBus::Callback->new(object => $object, method => $name, [args => \@args])
Creates a new callback object, for invoking a method on an object. The C<method>
parameter should be the name of the method to invoke, while the C<object> parameter
should be a blessed object on which the method will be invoked. The optional C<args>
parameter is an array reference of parameters to be pass to the callback, in addition
to those passed into the C<invoke> method.
=cut
sub new {
my $proto = shift;
my $class = ref($proto) || $proto;
my %params = @_;
my $self = {};
$self->{object} = $params{object} ? $params{object} : undef;
$self->{method} = $params{method} ? $params{method} : die "method parameter is required";
$self->{args} = $params{args} ? $params{args} : [];
bless $self, $class;
return $self;
}
=item $cb->invoke(@args)
Invokes the callback. The argument list passed to the callback
is a combination of the arguments supplied in the callback
constructor, followed by the arguments supplied in the C<invoke>
method.
=cut
sub invoke {
my $self = shift;
if ($self->{object}) {
my $obj = $self->{object};
my $method = $self->{method};
$obj->$method(@{$self->{args}}, @_);
} else {
my $method = $self->{method};
&$method(@{$self->{args}}, @_);
}
}
1;
__END__
=back
=head1 AUTHOR
Daniel P. Berrange.
=head1 COPYRIGHT
Copyright (C) 2004-2011 Daniel P. Berrange
=head1 SEE ALSO
L<Net::DBus::Reactor>
=cut
|