DBussy + GLib Event Loop

Lawrence D'Oliveiro <ldo-kC51rjc0cqs1dNLGKZg6taU/[email protected]>
Newsgroups gmane.comp.freedesktop.dbus
Organization Geek Central
Message-ID <[email protected]>
DBussy <https://github.com/ldo/dbussy>, <https://gitlab.com/ldo/dbussy>
is my Python binding for libdbus that takes advantage of the asyncio
<https://docs.python.org/3/library/asyncio.html> event-loop framework
with the coroutine capability introduced with Python 3.5.

Of course, every GUI toolkit already defines its own event loop. For
example, GTK+ is built around one provided by GLib
<https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html>.
And nobody is going to replace their event loop with Python’s one.

But they don’t need to. asyncio provides a default event loop, but more
than that, it defines a standard event-loop API. And it doesn’t really
require that much work to take an existing event loop and wrap it to be
compatible with this API, as a subclass of asyncio.AbstractEventLoop.
And then a GUI toolkit event loop that knows nothing of coroutines,
originally written for a language that had no such capability, becomes
capable of supporting coroutines in Python.

For example, glibcoro <https://github.com/ldo/glibcoro>,
<https://gitlab.com/ldo/glibcoro> is my attempt at an
asyncio-compatible layer wrapping the GLib event loop. So far it is
about 370 lines of code, which is not a large amount. And it is
functional enough to run these coroutine-intensive examples
<https://github.com/ldo/glibcoro_examples>,
<https://gitlab.com/ldo/glibcoro_examples>, which include a couple
showing off the usefulness of coroutines in a GUI-based app.

A new example I just added to this repo is a version of the
D-Bus signal_listener script from my collection of examples of DBussy in
action. Like the other non-GUI examples, it can run with either event
loop, just by setting an environment variable, to demonstrate that the
behaviour is just about identical either way. (Can you find any
differences?)
_______________________________________________
dbus mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dbus
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.