Mercurial > pidgin
diff libpurple/protocols/bonjour/buddy.h @ 17495:d7b50cac1c7a
This is a patch from Chris Davies to make Bonjour work on Windows using the Apple Bonjour framework. It turns out that the actual DNS-SD library is (3 clause) BSD licensed, so we can use it.
There are a few changes by me, mainly to fix the howl implementation.
Fixes #1117 .
There appear to be a few bugs, but I believe that they were also present previously. I'm hoping to do some more tweaking before the next release.
The howl implementation will eventually be supersceded by a native avahi implementation, so I opted for a somewhat dirty hack to enable it instead of doing something with config.h.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Tue, 05 Jun 2007 03:38:22 +0000 |
parents | 32c366eeeb99 |
children | c921f901c7ea |
line wrap: on
line diff
--- a/libpurple/protocols/bonjour/buddy.h Tue Jun 05 03:13:02 2007 +0000 +++ b/libpurple/protocols/bonjour/buddy.h Tue Jun 05 03:38:22 2007 +0000 @@ -17,14 +17,22 @@ #ifndef _BONJOUR_BUDDY #define _BONJOUR_BUDDY -#include <howl.h> #include <glib.h> +#include "config.h" #include "account.h" #include "jabber.h" +#ifdef USE_BONJOUR_APPLE +#include "dns_sd_proxy.h" +#else /* USE_BONJOUR_HOWL */ +#include <howl.h> +#endif + typedef struct _BonjourBuddy { + PurpleAccount *account; + gchar *name; gchar *first; gint port_p2pj; @@ -37,16 +45,38 @@ gchar *vc; gchar *ip; gchar *msg; + BonjourJabberConversation *conversation; + +#ifdef USE_BONJOUR_APPLE + DNSServiceRef txt_query; + int txt_query_fd; +#endif + } BonjourBuddy; +typedef enum _bonjour_buddy_member +{ + E_BUDDY_FIRST, + E_BUDDY_LAST, + E_BUDDY_STATUS, + E_BUDDY_EMAIL, + E_BUDDY_PHSH, + E_BUDDY_JID, + E_BUDDY_AIM, + E_BUDDY_VC, + E_BUDDY_MSG +} bonjour_buddy_member; + /** * Creates a new buddy. */ -BonjourBuddy *bonjour_buddy_new(const gchar *name, const gchar *first, - gint port_p2pj, const gchar *phsh, const gchar *status, - const gchar *email, const gchar *last, const gchar *jid, - const gchar *AIM, const gchar *vc, const gchar *ip, const gchar *msg); +BonjourBuddy *bonjour_buddy_new(const gchar *name, PurpleAccount* account); + +/** + * Sets a value in the BonjourBuddy struct, destroying the old value + */ +void set_bonjour_buddy_value(BonjourBuddy* buddy, bonjour_buddy_member member, const char* value, uint32_t len); /** * Check if all the compulsory buddy data is present. @@ -56,7 +86,7 @@ /** * If the buddy doesn't previoulsy exists, it is created. Else, its data is changed (???) */ -void bonjour_buddy_add_to_purple(PurpleAccount *account, BonjourBuddy *buddy); +void bonjour_buddy_add_to_purple(BonjourBuddy *buddy); /** * Deletes a buddy from memory.