/usr/lib/x86_64-linux-gnu/perl5/5.26/Net/DBus/Binding/Bus.pm is in libnet-dbus-perl 1.1.0-4build2.
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 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 | # -*- 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::Binding::Bus - Handle to a well-known message bus instance
=head1 SYNOPSIS
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);
=head1 DESCRIPTION
This is a specialization of the L<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 C<session> or
C<system> methods in L<Net::DBus>.
=head1 METHODS
=over 4
=cut
package Net::DBus::Binding::Bus;
use 5.006;
use strict;
use warnings;
use Net::DBus;
use base qw(Net::DBus::Binding::Connection);
=item my $bus = Net::DBus::Binding::Bus->new(type => $type);
=item my $bus = Net::DBus::Binding::Bus->new(address => $addr);
Open a connection to a message bus, either a well known bus type
specified using the C<type> parameter, or an arbitrary bus specified
using the C<address> parameter. If the C<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.
=cut
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;
}
=item $bus->request_name($service_name)
Send a request to the bus registering the well known name
specified in the C<$service_name> parameter. If another client
already owns the name, registration will be queued up, pending
the exit of the other client.
=cut
sub request_name {
my $self = shift;
my $service_name = shift;
$self->{connection}->dbus_bus_request_name($service_name);
}
=item my $name = $bus->get_unique_name
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.
=cut
sub get_unique_name {
my $self = shift;
$self->{connection}->dbus_bus_get_unique_name;
}
=item $bus->add_match($rule)
Register a signal match rule with the bus controller, allowing
matching broadcast signals to routed to this client.
=cut
sub add_match {
my $self = shift;
my $rule = shift;
$self->{connection}->dbus_bus_add_match($rule);
}
=item $bus->remove_match($rule)
Unregister a signal match rule with the bus controller, preventing
further broadcast signals being routed to this client
=cut
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;
=pod
=back
=head1 AUTHOR
Daniel P. Berrange
=head1 COPYRIGHT
Copyright (C) 2004-2011 Daniel P. Berrange
=head1 SEE ALSO
L<Net::DBus::Binding::Connection>, L<Net::DBus>
=cut
|