С помощью прокси QT DBUS, построенного на QdbusabStractInterface (через QDBUSXML2CPP), какой способ обработки услуги/объекта, который вы хотите взаимодействовать с тем, чтобы быть доступным, когда вы начинаете? Примечание: я не заинтересован в том, чтобы просто знать это (вы можете использовать blahservice.isvalid (), чтобы выяснить это); Я хочу быть в состоянии узнать, действителен ли это, и знаю, когда он становится действительным, чтобы я мог изменить состояние (и транслировать это изменение состояния с помощью сигнала), и при этом изменение состояния делают другие вещи. И наоборот, я хочу знать, когда это больше не является действительным по аналогичным причинам.#define CONNECT_DBUS_SIG(x,y) connect(blah,SIGNAL(x),this,SLOT(y))
// FIX - should watch for service, and also handle it going away and
// coming back
blah = new BlahService("com.xyzzy.BlahService", "/com/xyzzy/BlahService",
QDBusConnection::sessionBus(), this);
if (!blah)
return 0;
if (blah.isValid())
{
CONNECT_DBUS_SIG(foo(),Event_foo());
}
else
{
// Since we aren't watching for registration, what can we do but exit?
}
< /code>
Наверное, нам нужно наблюдать за nameownerchanged на объекте подключения DBUS - если код QT DBUS не делает это для нас - а затем, когда мы получаем это состояние изменения сигнала и, если необходимо Подключите или отключите сигналы от объекта. с этим уходит. Пример QT Car /Controller, по крайней мере, замечает, уходит ли сервер, и печатает «отключен», если isvalid () становится ложным во время использования, но это опрос isvalid (). < /P>
Добавлено: < /p>
Обратите внимание, что QtdbusabtractInterface Registers для изменений владения сервером (nameownerchanged) и обновления isvalid () Когда происходят изменения. Поэтому я подозреваю, что вы можете подключиться к этому сигналу ServerownerChanged напрямую, чтобы узнать об изменениях в владении и использовать его в качестве индикатора, чтобы попробовать еще раз - хотя вы не сможете доверять IsValid, поскольку он может быть обновлен до или после того, как вы получите сигнал. < /p>
Альтернативно (уродливое) вы можете настроить таймер и опрос для isvalid (). < /p>
Подробнее здесь: https://stackoverflow.com/questions/142 ... able-in-qt
В ожидании службы DBUS будет доступна в QT ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1740392159
Anonymous
С помощью прокси QT DBUS, построенного на QdbusabStractInterface (через QDBUSXML2CPP), какой способ обработки услуги/объекта, который вы хотите взаимодействовать с тем, чтобы быть доступным, когда вы начинаете? Примечание: я не заинтересован в том, чтобы просто знать это (вы можете использовать blahservice.isvalid (), чтобы выяснить это); Я хочу быть в состоянии узнать, действителен ли это, и знаю, когда он становится действительным, чтобы я мог изменить состояние (и транслировать это изменение состояния с помощью сигнала), и при этом изменение состояния делают другие вещи. И наоборот, я хочу знать, когда это больше не является действительным по аналогичным причинам.#define CONNECT_DBUS_SIG(x,y) connect(blah,SIGNAL(x),this,SLOT(y))
// FIX - should watch for service, and also handle it going away and
// coming back
blah = new BlahService("com.xyzzy.BlahService", "/com/xyzzy/BlahService",
QDBusConnection::sessionBus(), this);
if (!blah)
return 0;
if (blah.isValid())
{
CONNECT_DBUS_SIG(foo(),Event_foo());
}
else
{
// Since we aren't watching for registration, what can we do but exit?
}
< /code>
Наверное, нам нужно наблюдать за nameownerchanged на объекте подключения DBUS - если код QT DBUS не делает это для нас - а затем, когда мы получаем это состояние изменения сигнала и, если необходимо Подключите или отключите сигналы от объекта. с этим уходит. Пример QT Car /Controller, по крайней мере, замечает, уходит ли сервер, и печатает «отключен», если isvalid () становится ложным во время использования, но это опрос isvalid (). < /P>
Добавлено: < /p>
Обратите внимание, что QtdbusabtractInterface Registers для изменений владения сервером (nameownerchanged) и обновления isvalid () Когда происходят изменения. Поэтому я подозреваю, что вы можете подключиться к этому сигналу ServerownerChanged напрямую, чтобы узнать об изменениях в владении и использовать его в качестве индикатора, чтобы попробовать еще раз - хотя вы не сможете доверять IsValid, поскольку он может быть обновлен до или после того, как вы получите сигнал. < /p>
Альтернативно (уродливое) вы можете настроить таймер и опрос для isvalid (). < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/1423739/waiting-for-a-dbus-service-to-be-available-in-qt[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия