Questions ad minimal server loop implementation ( Re: Howto setup/connect to a listening server [dbus_server_liste (...)] ?
Simon McVittie
simon.mcvittie at collabora.co.uk
Tue Jul 26 02:35:35 PDT 2011
On Tue, 26 Jul 2011 at 11:13:14 +0200, rony wrote:
> What are the minimal requirements for implementing a DBus server loop?
The D-Bus mainloop stuff is rather "inside-out".
The API reference documentation for dbus_connection_set_watch_functions()
should hopefully explain it better - dbus_server_set_watch_functions() is
very similar.
> Would it be sufficient to employ a timeout function (set with
> "dbus_server_set_timeout_functions()")?
No, you need to implement watch functions too. DBusServer gives you a
socket to select() on (or equivalent, like poll() or epoll_wait()), and you
are expected to call back into DBusServer when the socket becomes ready.
> If not, which function
> is responsible for invoking the supplied new-connection function
> supplying the DBusConnection?
The internal functions eventually called by dbus_watch_handle().
> If one is supposed to supply a watch function (set with
> "dbus_server_set_watch_functions()"):
>
> How to learn what to watch?
Your DBusAddWatchFunction implementation will be called when a new socket
needs watching. Use dbus_watch_get_enabled(), dbus_watch_get_socket()
and dbus_watch_get_flags() to see what you're expected to do.
> What is the handler supposed to do
Cal dbus_watch_handle() when an interesting event (where "interesting"
is as defined by dbus_watch_get_flags()) has happened on a socket whose watch
is enabled.
Regards,
S
More information about the dbus
mailing list