Building a server is easy, simply connect to the specified bus, request a name and create an infinite loop where you poll for events. Example:
UDBus::Connection connection{};
UDBus::Error error{};
connection.bus_get(DBUS_BUS_SESSION, error);
if (error.is_set())
{
LOG("Couldn't connect to the session bus");
return 1;
}
auto result = connection.request_name("test.method.server", DBUS_NAME_FLAG_REPLACE_EXISTING, error);
if (result != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER)
{
LOG("Not primary owner of the name");
return 2;
}
while (true)
{
connection.read_write(0);
auto message = connection.pop_message();
if (!message.is_valid())
continue;
// Call any mesage parsing code here
message.unref();
}