used lib 1.4.0
busctl
‣ Type=signal Endian=l Flags=1 Version=1 Cookie=2950 Timestamp="Fri 2024-07-12 05:12:32.158034 UTC"
Sender=:1.67774 Path=/ru/test/management/converter Interface=ru.test.management.converter.modules Member=config_changed
UniqueName=:1.67774
MESSAGE "" {
};
run
#include <iostream>
#include <sdbus-c++/sdbus-c++.h>
int main() {
std::cout << "Start prog" << std::endl;
auto converter_signal_proxy = sdbus::createProxy("ru.test.management",
"/ru/test/management/converter");
converter_signal_proxy->uponSignal("config_changed").onInterface("ru.test.management.converter.modules")
.call([]() {
std::cout << "Catch signal converter" << std::endl;
});
sleep(15);
std::cout << "End prog" << std::endl;
return 0;
}
output
the monitor shows that there is a signal, but I can't get it with my application, what am I doing wrong
I did it according to the documentation https://github.com/Kistler-Group/sdbus-cpp/blob/master/docs/using-sdbus-c++.md
Client side
neeed help :))
but if you do it like this, I get a signal
#include <dbus/dbus.h>
#include <cstdio>
[[noreturn]] void listen_to_signals(DBusConnection* conn) {
dbus_bus_add_match(conn, "type='signal',interface='ru.test.management.converter.modules'", nullptr);
dbus_connection_flush(conn);
while(true) {
DBusMessage* msg;
dbus_connection_read_write(conn, 0);
msg = dbus_connection_pop_message(conn);
if (msg != nullptr) {
if (dbus_message_is_signal(msg, "ru.test.management.converter.modules", "config_changed")) {
printf("Received Signal\n");
}
dbus_message_unref(msg);
}
}
}
int main() {
DBusError err;
DBusConnection* conn;
dbus_error_init(&err);
conn = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
if (dbus_error_is_set(&err)) {
fprintf(stderr, "Connection Error (%s)\n", err.message);
dbus_error_free(&err);
return 1;
}
listen_to_signals(conn);
}
used lib 1.4.0
busctl
run
output
the monitor shows that there is a signal, but I can't get it with my application, what am I doing wrong
I did it according to the documentation https://github.com/Kistler-Group/sdbus-cpp/blob/master/docs/using-sdbus-c++.md
Client side
neeed help :))
but if you do it like this, I get a signal