| Net-DBus documentation | Contained in the Net-DBus distribution. |
Net::DBus::Callback - a callback for receiving reactor events
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)
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 Net::DBus::Reactor class
Creates a new callback object, for invoking a plain old function. The method
parameter should be the fully qualified function name to invoke, including the
package name. The optional args parameter is an array reference of parameters
to be pass to the callback, in addition to those passed into the invoke method.
Creates a new callback object, for invoking a method on an object. The method
parameter should be the name of the method to invoke, while the object parameter
should be a blessed object on which the method will be invoked. The optional args
parameter is an array reference of parameters to be pass to the callback, in addition
to those passed into the invoke method.
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 invoke
method.
Daniel P. Berrange.
Copyright (C) 2004-2006 Daniel P. Berrange
| Net-DBus documentation | Contained in the Net-DBus distribution. |
# -*- perl -*- # # Copyright (C) 2004-2006 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.
package Net::DBus::Callback; use 5.006; use strict; use warnings;
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; }
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__