Net-DBus

 view release on metacpan or  search on metacpan

lib/Net/DBus/RemoteService.pm  view on Meta::CPAN

# -*- 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::RemoteService - Access services provided on the bus

=head1 SYNOPSIS

  my $bus = Net::DBus->find;
  my $service = $bus->get_service("org.freedesktop.DBus");

  my $object = $service->get_object("/org/freedesktop/DBus");
  foreach (@{$object->ListNames}) {
    print "$_\n";
  }

=head1 DESCRIPTION

This object provides a handle to a remote service on the
bus. From this handle it is possible to access objects
associated with the service. If a service is not running,
an attempt will be made to activate it the first time a
method is called against one of its objects.

=head1 METHODS

=over 4

=cut

package Net::DBus::RemoteService;

use 5.006;
use strict;
use warnings;

use Net::DBus::RemoteObject;

=item my $service = Net::DBus::RemoteService->new($bus, $owner, $service_name);

Creates a new handle for a remote service. The C<$bus> parameter is an
instance of L<Net::DBus>, C<$owner> is the name of the client providing the
service, while C<$service_name> is the well known name of the  service on
the bus. Service names consist of two or more tokens, separated
by periods, while the tokens comprise the letters a-z, A-Z, 0-9 and _,
for example C<org.freedesktop.DBus>. There is generally no need to call
this constructor, instead the C<get_service> method on L<Net::DBus> should
be used. This caches handles to remote services, eliminating repeated
retrieval of introspection data.

=cut

sub new {
    my $class = shift;
    my $self = {};

    $self->{bus} = shift;
    $self->{owner_name} = shift;
    $self->{service_name} = shift;
    $self->{objects} = {};

    bless $self, $class;

    return $self;
}


=item my $bus = $service->get_bus;

Retrieves a handle for the bus to which this service is attached.
The returned object will be an instance of L<Net::DBus>.

=cut

sub get_bus {
    my $self = shift;

    return $self->{bus};
}


=item my $service_name = $service->get_service_name

Retrieves the name of the remote service as known to the bus.

=cut

sub get_service_name {
    my $self = shift;
    return $self->{service_name};
}

=item my $owner_name = $service->get_owner_name;

Retrieves the name of the client owning the service at the
time it was connected to.

=cut

sub get_owner_name {
    my $self = shift;
    return $self->{owner_name};
}

=item my $object = $service->get_object($object_path[, $interface]);
=item my $object = $service->get_object($object_path, \%params);



( run in 0.676 second using v1.01-cache-2.11-cpan-39bf76dae61 )