2009-11-02 2 views
3

Lorsque je fais un "dbus_connection_close", dois-je vider la file d'attente des messages? En d'autres termes, dois-je continuer avec "dbus_connection_read_write_dispatch" jusqu'à ce que je reçoive l'indication "déconnecté" ou est-il sûr d'arrêter l'envoi?dbus: connexion encastrée?

Mise à jour: J'ai besoin de fermer la connexion à DBus d'une manière propre. A partir de la lecture de la documentation, tout le nettoyage doit être fait avant de "dé-référencer" la connexion et ce processus n'est pas très bien documenté OMI.

Répondre

2

Après quelques recherches supplémentaires, il semble qu'il existe deux types de connexion: partagée et privée.

La connexion partagée ne doit pas être être fermé seulement non référencé. En outre, il ne semble pas que la connexion doit être vidée & distribué sauf si les messages sortants doivent être remis. Dans mon cas, j'avais juste besoin de mettre fin à la communication sur DBus dès que possible sans essayer de récupérer les messages sortants.

Ainsi, la réponse courte est: NON - aucun rinçage/aucun envoi ne doit être effectué avant dbus_connection_unref.

0

En regardant at the documentation for dbus_connection_close(), la seule chose que may be invoked est la fonction d'état d'expédition pour indiquer que la connexion a été fermée. Donc, la commande ici est quelque chose que vous voulez probablement faire attention à ... c'est-à-dire être averti d'une connexion fermée/abandonnée avant que les choses restent dans la file d'attente des messages.

En regardant le source of the function, il semble que la seule chose qu'il va faire est de retourner en cas d'échec, c'est-à-dire une connexion invalide/un pointeur NULL. Sinon, il semble que je raccroche.

Cela signifie que oui, vous devez probablement vider la file d'attente des messages avant de raccrocher.

Clause de non-responsabilité: J'ai seulement dû parler à dbus plusieurs fois, je ne suis en aucun cas une autorité sur elle.

+0

Mon problème est en fait l'inverse: je dois fermer la connexion à DBus et m'assurer que j'effectue le nettoyage nécessaire. – jldupont

+0

@jldupont: Alors oui, vous devriez vider la file d'attente des messages. Je vais éditer ma réponse pour être plus évident. –

+0

@tinkertim: merci pour votre effort. – jldupont

Questions connexes