ekiga r6910 - in trunk: . lib/engine/presence/avahi



Author: jpuydt
Date: Wed Sep 10 14:28:24 2008
New Revision: 6910
URL: http://svn.gnome.org/viewvc/ekiga?rev=6910&view=rev

Log:
Removed the Avahi::Presentity code
Made Avahi::Heap an Ekiga::PresenceFetcher, fixing #551411

Removed:
   trunk/lib/engine/presence/avahi/avahi-presentity.cpp
   trunk/lib/engine/presence/avahi/avahi-presentity.h
Modified:
   trunk/ChangeLog
   trunk/lib/engine/presence/avahi/Makefile.am
   trunk/lib/engine/presence/avahi/avahi-cluster.cpp
   trunk/lib/engine/presence/avahi/avahi-cluster.h
   trunk/lib/engine/presence/avahi/avahi-heap.cpp
   trunk/lib/engine/presence/avahi/avahi-heap.h
   trunk/lib/engine/presence/avahi/avahi-main.cpp

Modified: trunk/lib/engine/presence/avahi/Makefile.am
==============================================================================
--- trunk/lib/engine/presence/avahi/Makefile.am	(original)
+++ trunk/lib/engine/presence/avahi/Makefile.am	Wed Sep 10 14:28:24 2008
@@ -10,8 +10,6 @@
 	-I$(top_srcdir)/lib/engine/presence/skel
 
 libgmavahi_la_SOURCES = \
-	$(avahi_dir)/avahi-presentity.h \
-	$(avahi_dir)/avahi-presentity.cpp \
 	$(avahi_dir)/avahi-heap.h \
 	$(avahi_dir)/avahi-heap.cpp \
 	$(avahi_dir)/avahi-cluster.h \

Modified: trunk/lib/engine/presence/avahi/avahi-cluster.cpp
==============================================================================
--- trunk/lib/engine/presence/avahi/avahi-cluster.cpp	(original)
+++ trunk/lib/engine/presence/avahi/avahi-cluster.cpp	Wed Sep 10 14:28:24 2008
@@ -37,11 +37,18 @@
 
 #include "avahi-cluster.h"
 
-Avahi::Cluster::Cluster (Ekiga::PresenceCore &_core): core(_core)
+Avahi::Cluster::Cluster (Ekiga::ServiceCore &_core): core(_core)
 {
-  heap = new Heap (_core);
+  Ekiga::PresenceCore* presence_core = NULL;
+
+  heap = new Heap (core);
 
   add_heap (*heap);
+
+  presence_core
+    = dynamic_cast<Ekiga::PresenceCore*>(core.get ("presence-core"));
+  /* don't check the dynamic cast: it has been checked already by avahi-main!*/
+  presence_core->add_presence_fetcher (*heap);
 }
 
 Avahi::Cluster::~Cluster ()

Modified: trunk/lib/engine/presence/avahi/avahi-cluster.h
==============================================================================
--- trunk/lib/engine/presence/avahi/avahi-cluster.h	(original)
+++ trunk/lib/engine/presence/avahi/avahi-cluster.h	Wed Sep 10 14:28:24 2008
@@ -55,7 +55,7 @@
   {
   public:
 
-    Cluster (Ekiga::PresenceCore &_core);
+    Cluster (Ekiga::ServiceCore &_core);
 
     ~Cluster ();
 
@@ -65,7 +65,7 @@
 
   private:
 
-    Ekiga::PresenceCore &core;
+    Ekiga::ServiceCore &core;
     Heap *heap;
   };
 

Modified: trunk/lib/engine/presence/avahi/avahi-heap.cpp
==============================================================================
--- trunk/lib/engine/presence/avahi/avahi-heap.cpp	(original)
+++ trunk/lib/engine/presence/avahi/avahi-heap.cpp	Wed Sep 10 14:28:24 2008
@@ -87,7 +87,7 @@
 }
 
 
-Avahi::Heap::Heap (Ekiga::PresenceCore &_core): core(_core)
+Avahi::Heap::Heap (Ekiga::ServiceCore &_core): core(_core)
 {
   const AvahiPoll *poll_api = NULL;
   int error;
@@ -261,7 +261,7 @@
   std::string status;
   bool already_known = false;
   gchar *url = NULL;
-  Presentity *presentity = NULL;
+  Ekiga::URIPresentity *presentity = NULL;
   AvahiStringList *txt_tmp = NULL;
 
   switch (event) {
@@ -295,13 +295,11 @@
 	 iter != end ();
 	 iter++) {
 
-      // FIXME never called
       if ((*iter).get_name () == name) {
 
 	/* known contact has been updated */
-	(*iter).set_status (status);
-	(*iter).set_presence (presence);
-	(*iter).updated.emit ();
+	presence_received.emit ((*iter).get_uri (), presence);
+	status_received.emit ((*iter).get_uri (), status);
 	already_known = true;
       }
     }
@@ -313,9 +311,9 @@
       if (broken != NULL && broken[0] != NULL && broken[1] != NULL) {
 
 	url = g_strdup_printf ("%s:neighbour %s:%d", broken[1], host_name, port);
-	presentity = new Presentity (core, name, url);
-	presentity->set_status (status);
-	presentity->set_presence (presence);
+	presentity = new Ekiga::URIPresentity (core, name, url);
+	status_received.emit (url, status);
+	presence_received.emit (url, presence);
 	add_presentity (*presentity);
 	g_free (url);
       }

Modified: trunk/lib/engine/presence/avahi/avahi-heap.h
==============================================================================
--- trunk/lib/engine/presence/avahi/avahi-heap.h	(original)
+++ trunk/lib/engine/presence/avahi/avahi-heap.h	Wed Sep 10 14:28:24 2008
@@ -40,7 +40,7 @@
 
 #include "presence-core.h"
 #include "heap-impl.h"
-#include "avahi-presentity.h"
+#include "uri-presentity.h"
 
 #include <avahi-client/client.h>
 #include <avahi-client/lookup.h>
@@ -57,11 +57,13 @@
  * @{
  */
 
-  class Heap: public Ekiga::HeapImpl<Presentity>
+  class Heap:
+    public Ekiga::PresenceFetcher,
+    public Ekiga::HeapImpl<Ekiga::URIPresentity>
   {
   public:
 
-    Heap (Ekiga::PresenceCore &_core);
+    Heap (Ekiga::ServiceCore &_core);
 
     ~Heap ();
 
@@ -72,6 +74,10 @@
     bool populate_menu_for_group (const std::string name,
 				  Ekiga::MenuBuilder& builder);
 
+    /* the PresenceFetcher interface : we don't do what we're told ;-) */
+    void fetch (std::string) {}
+    void unfetch (std::string) {}
+
     /* these should be private but are called from C code */
 
     void ClientCallback (AvahiClient *client,
@@ -101,7 +107,7 @@
 
   private:
 
-    Ekiga::PresenceCore &core;
+    Ekiga::ServiceCore &core;
     AvahiGLibPoll *poll;
     AvahiClient *client;
     AvahiServiceBrowser *browser;

Modified: trunk/lib/engine/presence/avahi/avahi-main.cpp
==============================================================================
--- trunk/lib/engine/presence/avahi/avahi-main.cpp	(original)
+++ trunk/lib/engine/presence/avahi/avahi-main.cpp	Wed Sep 10 14:28:24 2008
@@ -78,7 +78,7 @@
 
   if (presence_core != NULL) {
 
-    cluster = new Avahi::Cluster (*presence_core);
+    cluster = new Avahi::Cluster (core);
     service = new Avahi::Service (cluster);
     core.add (*service);
     presence_core->add_cluster (*cluster);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]