1. Is it possible to send a message via <dbus/dbus.h> and receive it using Qt one ?
2. Is it possible to send a message as root and receive it from app which runs on different user ? (linux)

1a. I have troubles to read the message that's why the question. This is my code:

Send <dbus/dbus.h>
Qt Code:
  1. dbus_error_init(&_dbusError);
  2. _dbusConnection = dbus_bus_get(DBUS_BUS_SYSTEM, &_dbusError);
  3.  
  4. if (dbus_error_is_set(&_dbusError)) {
  5. logger("Dbus Connection Error");
  6. dbus_error_free(&_dbusError);
  7. return;
  8.  
  9. } else {
  10. logger("Dbus Connected");
  11. }
  12.  
  13. _dbusMessage = dbus_message_new_signal("/", "com.app.message", "app");
  14. if (NULL == _dbusMessage) {
  15. logger("Message Null");
  16. exit(1);
  17. } else {
  18. logger("Dbus new signal");
  19. }
  20.  
  21. dbus_message_iter_init_append(_dbusMessage, &_dbusMessageIter);
  22. if (!dbus_message_iter_append_basic(&_dbusMessageIter, DBUS_TYPE_STRING, &message)) {
  23. logger("Couldn't append dbus message");
  24. } else {
  25. stringstream s;
  26. s << message;
  27. logger("Dbus Messgae append - " + s.str());
  28. }
  29.  
  30. if (!dbus_connection_send(_dbusConnection, _dbusMessage, &_dbusSerial)) {
  31. logger("Couldn't send dbus message");
  32. } else {
  33. logger("Dbus Messgae sent");
  34. }
  35.  
  36. dbus_connection_flush(_dbusConnection);
  37. dbus_message_unref(_dbusMessage);
To copy to clipboard, switch view to plain text mode 

Read <QtDBus/QtDBus> example from ping pong

Qt Code:
  1. QString Pong::ping(const QString &arg)
  2. {
  3. QMetaObject::invokeMethod(QCoreApplication::instance(), "quit");
  4. return QString("ping(\"%1\") got called").arg(arg);
  5. }
  6.  
  7. int main(int argc, char **argv)
  8. {
  9. QCoreApplication app(argc, argv);
  10.  
  11. if (!QDBusConnection::sessionBus().isConnected()) {
  12. cout << "Cannot connect to the D-Bus session bus" << endl;
  13. return 1;
  14. }
  15.  
  16. if (!QDBusConnection::sessionBus().registerService("com.app.message")) {
  17. cout << "error" << endl;
  18. exit(1);
  19. }
  20.  
  21. Pong pong;
  22. QDBusConnection::sessionBus().registerObject("/", &pong, QDBusConnection::ExportAllSlots);
  23.  
  24.  
  25. app.exec();
  26. return 0;
  27. }
To copy to clipboard, switch view to plain text mode 

Thanks for looking