dbus: скрытое соединение? - PullRequest
       10

dbus: скрытое соединение?

3 голосов
/ 02 ноября 2009

Когда я делаю "dbus_connection_close", нужно ли очищать очередь сообщений?

Другими словами, нужно ли мне продолжать с "dbus_connection_read_write_dispatch" до тех пор, пока я не получу индикацию "отключено" или безопасно отменить отправку?

Обновлено: Мне нужно закрыть соединение с DBus чистым способом. После прочтения документации вся очистка должна быть выполнена до «разыменования» соединения, и этот процесс не очень хорошо задокументирован IMO.

Ответы [ 2 ]

2 голосов
/ 05 ноября 2009

После еще нескольких копаний выясняется, что существует два типа подключения: общее и частное.

Общее соединение не должно быть закрыто просто без ссылки . Кроме того, не похоже, что соединение должно быть сброшено и отправлено , если только исходящие сообщения не должны быть доставлены.

В моем случае мне просто нужно было как можно скорее завершить связь через DBus, не пытаясь спасти какие-либо исходящие сообщения.

Таким образом, краткий ответ: НЕТ - не требуется промывка / отправка до dbus_connection_unref.

0 голосов
/ 02 ноября 2009

Просмотр документации для dbus_connection_close () , единственное, что может быть вызвано - это функция состояния отправки, указывающая, что соединение было закрыто.

Итак, при заказе здесь следует обратить внимание на то, на что ... то есть получение уведомлений о закрытом / сброшенном соединении до того, как что-то останется в очереди сообщений.

Глядя на источник функции , кажется, что единственное, что она собирается сделать, это вернуть в случае сбоя, то есть неверное соединение / указатель NULL. В противном случае (кажется) просто повесить трубку.

Это означает, что да, вам, вероятно, следует очистить очередь сообщений перед тем, как повесить трубку.

Отказ от ответственности : Мне приходилось разговаривать с dbus всего несколько раз, я ни в коем случае не авторитет в этом.

...