Hi,

On Mittwoch, 14. Juli 2021 16:52:15 CEST Thomas Haller wrote:
[...]
> > so how can I use org.freedesktop.DBus.Properties.PropertiesChanged
> > then?
> > What would be the correct way instead?
> > Using
> >   my $busobjpath = "/org/freedesktop/NetworkManager/Settings";
> > as before?
> > This doesn't work either, though.
> > 
> > Probably there is a fundamental misunderstanding regaring the concept
> > on my
> > side.
> 
> Hi,
> 
> I am not familiar with this Perl's Net::DBus, but in general:
> 
> 
> On D-Bus, you have the well-known name
> ("org.freedesktop.NetworkManager") where you find NetworkManager's D-
> Bus API.
> 
> 
> There, you find many D-Bus objects, at paths that start with
> "/org/freedesktop/NetworkManager". You see them with `busctl tree
> org.freedesktop.NetworkManager`.
> 
> All of these objects also implement the standard D-Bus interface
> "org.freedesktop.DBus.Properties" -- as documented at
> https://dbus.freedesktop.org/doc/dbus-specification.html
> That interface, has (among) others a signal "PropertiesChanged".
> 
> 
> This "org.freedesktop.DBus.Properties.PropertiesChanged" signal works
> very similar to the earlier "PropertiesChanged" signals from the NM
> specific interfaces ( "org.freedesktop.NetworkManager*").
> 
> So, yes, there should be not much to do except replace the interface
> name "org.freedesktop.NetworkManager*" with
> "org.freedesktop.DBus.Properties".
> 
> 
> you mention specifically
> 
>   my $busobjpath = "/org/freedesktop/NetworkManager/Settings";
> 
> In `d-feet` you'll see that this object only has three properties. So
> you'll see few PropertiesChanged signals on that object...

Yeah, my fault, I meant
my $busobjpath = "/org/freedesktop/NetworkManager";

8-(

> 
> 
> Does that help? Otherwise, please share a working, minimal example.

Ok.
This is the working example I used before - btw. it stems from a suggestion 
you made back in 2016/2017 :)

#!/usr/bin/perl -w

use strict;

use Data::Dumper;
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Indent = 1;
use Net::DBus;
use Net::DBus::Dumper;
use Net::DBus::Reactor;

my $oBUS = Net::DBus->system || die $!;
my $nm = "org.freedesktop.NetworkManager";
my $oNM = $oBUS->get_service( $nm ) || die $!;
my $nmobjpath = "/org/freedesktop/NetworkManager";
my $nmif = "org.freedesktop.NetworkManager";
my $oNMIF = $oNM->get_object( $nmobjpath, $nmif ) || die $!;

$nmobjpath = "/org/freedesktop/NetworkManager/Settings";
$nmif = "org.freedesktop.NetworkManager.Settings";
my $oNMIFS = $oNM->get_object( $nmobjpath, $nmif ) || die $!;

$oNMIF->connect_to_signal(
  "PropertiesChanged", sub {
    &{ \&dbnm_onNMPropertiesChanged }( $oNM, $oNMIF, $oNMIFS, @_ );
  }
);
my $reactor = Net::DBus::Reactor->main() || die $!;
$reactor->run() || die $!;

sub dbnm_onNMPropertiesChanged {
  my( $oNM, $oNMIF, $oNMIFS, $props ) = @_;
  print "\n- props -\n", Dumper( $props ), "\n--\n";
}

It should output the contents of the props hash, whenever the signal gets 
caught.

> 
> 
> best,
> Thomas

Bye.
Michael.


_______________________________________________
networkmanager-list mailing list
networkmanager-list@gnome.org
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to