dbus: прямое соединение?

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

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

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


person jldupont    schedule 02.11.2009    source источник


Ответы (2)


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

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

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

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

person jldupont    schedule 05.11.2009

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

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

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

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

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

person Tim Post♦    schedule 02.11.2009
comment
Моя проблема на самом деле наоборот: мне нужно закрыть соединение с DBus и убедиться, что я выполнил необходимую очистку. - person jldupont; 02.11.2009
comment
@jldupont: Тогда да, вам следует очистить очередь сообщений. Я отредактирую свой ответ, чтобы он был более очевидным. - person Tim Post♦; 02.11.2009