2009-11-02 5 views
3

"dbus_connection_close"할 때 메시지 대기열을 플러시해야합니까?dbus : 플러시 연결?

즉, "연결이 끊어진"표시가 나타날 때까지 또는 "발송을 중지하는 것이 안전 할 때까지"dbus_connection_read_write_dispatch를 계속해야합니까?

업데이트 : DBus에 대한 연결을 깨끗하게 닫아야합니다. 문서를 읽으면서 모든 정리 작업은 연결을 "참조 해제"하기 전에 수행해야하며이 프로세스는 IMO에 잘 설명되어 있지 않습니다.

답변

2

더 많은 파고가 끝나면 공유 및 개인의 두 가지 연결 유형이있는 것처럼 보입니다.

공유 연결 단지 참조되지 않은을 닫을 수 없습니다해야합니다. 또한 보내는 메시지를 배달해야하는 경우가 아니면 &이 인 경우 연결을 플러시해야합니다.

내 경우에는 나가는 메시지를 회수하지 않고 최대한 빨리 DBus를 통한 통신을 종료해야했습니다.

따라서 짧은 대답은 다음과 같습니다. 아니오 - 플러시 없음/디스패치 없음을 dbus_connection_unref 이전에 수행해야합니다.

0

at the documentation for dbus_connection_close()을 보면 may be invoked은 연결이 종료되었음을 나타내는 디스패치 상태 기능입니다.

여기에서 주문하는 것은 아마도 메시지 큐에 남아있는 물건에 앞서 닫힌/끊어진 연결을 알리는 것입니다.

source of the function에서 볼 수있는 것은 실패한 경우 반환 (예 : 잘못된 연결/NULL 포인터) 일뿐입니다. 그렇지 않으면 그냥 전화를 끊는 것 같습니다.

예, 전화를 끊기 전에 메시지 대기열을 플러시해야합니다.

면책 조항는 : 어떤이에 대한 권한을 의미하여 내가 몇 번 DBUS 얘기 했어, 내가 아니에요.

+0

내 문제는 실제로 반대 방향입니다. DBus 연결을 닫고 필요한 정리 작업을 수행해야합니다. – jldupont

+0

@jldupont : 그렇다면 메시지 큐를 플러시해야합니다. 내 대답을 더 명확하게 편집 할 것입니다. –

+0

@ tinkertim : 노력해 주셔서 감사합니다. – jldupont