I'm delving deeper into DBus, in particular the C API. I want to confirm my basic understanding of how the API works. <br><br>When writing a server, an object is registered with dbus_connection_register_object_path. The DBus libaray will then use the vtable to call my handler function for ANY message recieved by my service that specifies the object path I used in the registration call.
<br><br>It is up to my handler to determine if my registered object supports the method in the message.<br><br>When using a proxy for a remote object where I want to receive signals from the remote object, I would first dbus_connection_add_filter, followed by dbus_bus_add_match with rules for each signal that I'm interested in.
<br><br>The bus daemon will send any signals that match and my filter routine will check the messages and act on the signals. Any messages sent to my service will be passed to my filter routine.<br><br>So, if I have an app that both exports objects and also uses remote objects:
<br><br>Method calls on my exported objects will pass through my filter routine (which should ignore them) and then get passed to my object handler ( _vtable handler function ) for my object to handle. Signals that I have added match rules will also pass to my filter function which will then act upon them.
<br><br>What I'm trying to understand is the correct way to handle inbound (async?) messages in an application that both exports objects and uses remote objects.<br><br>The third type of inbound messages would be replies to calls on remote objects, is it correct to also handle these in my filter function, or additional filter functions on a per-proxy object? I presume that I don't need to add a match rule to receive the replies to remote calls as they should be addressed to me as the destination.
<br><br>Thanks in advance for the enlightenment.<br><br><br>