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.