| Net-DBus documentation | Contained in the Net-DBus distribution. |
Net::DBus::Binding::Bus - Handle to a well-known message bus instance
use Net::DBus::Binding::Bus; # Get a handle to the system bus my $bus = Net::DBus::Binding::Bus->new(type => &Net::DBus::Binding::Bus::SYSTEM);
This is a specialization of the Net::DBus::Binding::Connection
module providing convenience constructor for connecting to one of
the well-known bus types. There is no reason to use this module
directly, instead get a handle to the bus with the session or
system methods in Net::DBus.
Open a connection to a message bus, either a well known bus type
specified using the type parameter, or an arbitrary bus specified
using the address parameter. If the private parameter is set
to a true value, then a private connection to the bus is obtained.
The caller must explicitly disconnect this bus instance before
releasing the last instance of the object.
Send a request to the bus registering the well known name
specified in the $service_name parameter. If another client
already owns the name, registration will be queued up, pending
the exit of the other client.
Returns the unique name by which this processes' connection to the bus is known. Unique names are never re-used for the entire lifetime of the bus daemon.
Register a signal match rule with the bus controller, allowing matching broadcast signals to routed to this client.
Unregister a signal match rule with the bus controller, preventing further broadcast signals being routed to this client
Daniel Berrange <dan@berrange.com>
Copyright 2004-2005 by Daniel 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::Binding::Bus; use 5.006; use strict; use warnings; use Net::DBus; use base qw(Net::DBus::Binding::Connection);
sub new { my $proto = shift; my $class = ref($proto) || $proto; my %params = @_; my $connection; if (defined $params{type}) { if ($params{private}) { $connection = Net::DBus::Binding::Bus::_open_private($params{type}); } else { $connection = Net::DBus::Binding::Bus::_open($params{type}); } } elsif (defined $params{address}) { if ($params{private}) { $connection = Net::DBus::Binding::Connection::_open_private($params{address}); } else { $connection = Net::DBus::Binding::Connection::_open($params{address}); } $connection->dbus_bus_register(); } else { die "either type or address parameter is required"; } my $self = $class->SUPER::new(%params, connection => $connection); bless $self, $class; return $self; }
sub request_name { my $self = shift; my $service_name = shift; $self->{connection}->dbus_bus_request_name($service_name); }
sub get_unique_name { my $self = shift; $self->{connection}->dbus_bus_get_unique_name; }
sub add_match { my $self = shift; my $rule = shift; $self->{connection}->dbus_bus_add_match($rule); }
sub remove_match { my $self = shift; my $rule = shift; $self->{connection}->dbus_bus_remove_match($rule); } sub DESTROY { # Keep autoloader quiet } sub AUTOLOAD { # This AUTOLOAD is used to 'autoload' constants from the constant() # XS function. my $constname; our $AUTOLOAD; ($constname = $AUTOLOAD) =~ s/.*:://; die "&Net::DBus::Binding::Bus::constant not defined" if $constname eq '_constant'; if (!exists $Net::DBus::Binding::Bus::_constants{$constname}) { die "no such method $constname, and no constant \$Net::DBus::Binding::Bus::$constname"; } { no strict 'refs'; *$AUTOLOAD = sub { $Net::DBus::Binding::Bus::_constants{$constname} }; } goto &$AUTOLOAD; } 1;