On Wed, 2018-04-11 at 23:17 -0400, Doug Torrance wrote:
> Hello,
> 
> I'm coding a small utility using libnm.  I'd like the bitrate of wifi
> devices to update over time, just like in the "Connection
> Information" dialog of nm-applet.  However, the bitrate never seems
> to change.
> 
> The code below illustrates my problem:
> 
> #include <NetworkManager.h>
> #include <unistd.h>
> #include <stdio.h>
> 
> int main(int argc, char *argv[])
> {
>       NMClient *client;
>       const GPtrArray *devices;
>       NMDevice *device;
> 
>       client = nm_client_new(NULL, NULL);
>       devices = nm_client_get_devices(client);
>       device = g_ptr_array_index(devices, 0);
> 
>       while (1) {
>               printf("%d\n",
>                    
>  nm_device_wifi_get_bitrate(NM_DEVICE_WIFI(device)));
>               sleep(5);
>       }

Hi,

you never iterate the mainloop, hence, no D-Bus signals from
NetworkManager are processed, and the value never changes.

You need to run the mainloop, like g_main_loop_run() or
g_main_context_iterate().

Also, note that unless you keep references to the instances, they might
be destroyed while the mainloop processes events. So, you could take a
reference, but better is probably to re-fetch it every time (or watch
whether the device gets deleted in the meantime, by listening to
signals).

best,
Thomas

> }
> 
> This program just prints the same number over and over again -- the
> value of the bitrate when the program was first started.  Meanwhile,
> I can open an nm-applet dialog simultaneously and watch the bitrate
> change merrily over time.
> 
> What am I missing?
> 
> Thank you!

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
networkmanager-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to