[systemd-devel] [RFC] activate on DBus signal

WaLyong Cho walyong.cho at samsung.com
Mon Mar 23 01:54:02 PDT 2015


Hi,

Now, I'm looking for a method to a service be activated on special DBus
signal. If a process is running for waiting some of DBus signal this can
be useful.

I already told with Simon in DBus mailing list.

see this thread:
http://lists.freedesktop.org/archives/dbus/2015-March/016607.html

Simon said:
"If it did, there are some nasty ordering constraints - I certainly
wouldn't want to have to delay delivery of a broadcast until all
interested services had started up! - so I don't think adding this
feature would be a good idea."

How about also support for DBus signal?

My idea is...
Add new configuration directory. (e.g. "/etc/systemd/active-by-signal")
And service can install its configuration file on there with below
format. (Please don't care of its detail. It just a example.)

<signal>
  <listen dest="org.freedesktop.DBus">
  <listen interface="org.freedesktop.DBus.Properties">
  <listen
object="/org/freedesktop/systemd1/unit/systemd_2dlogind_2eservice">
  <listen member="PropertiesChanged">
</signal>

(I thought more appropriate .xml format better than .ini to define
multiple signal.)

Then, make systemd to monitor DBus. And if a matched signal was sent,
activate the service.
Until here, looks not much difficult. But the origin signal was already
sent. So if the service has its own bus then send a method call for
missed signal. Of course, the activated service has to handle those
method call.

This method can be seemed does not make sense. But I think, this
facility obviously useful.

Thank you in advance for comment.


WaLyong


More information about the systemd-devel mailing list