[epiphany/wip/history-rewrite: 7/9] ephy-history-service: Add a method to populate a list of hosts



commit feded11992fddd4becc21304e23561bdfe333ff3
Author: Claudio Saavedra <csaavedra igalia com>
Date:   Fri Mar 2 21:27:17 2012 +0200

    ephy-history-service: Add a method to populate a list of hosts
    
    Given a list of EphyHistoryHosts containing only the host ids, this
    method will query for the rest of the data from the database

 lib/history/ephy-history-service.c |   36 +++++++++++++++++++++++++++++++++++-
 lib/history/ephy-history-service.h |    1 +
 2 files changed, 36 insertions(+), 1 deletions(-)
---
diff --git a/lib/history/ephy-history-service.c b/lib/history/ephy-history-service.c
index fb02c80..5772885 100644
--- a/lib/history/ephy-history-service.c
+++ b/lib/history/ephy-history-service.c
@@ -40,6 +40,7 @@ typedef enum {
   GET_HOST_FOR_URL,
   QUERY_URLS,
   QUERY_VISITS,
+  POPULATE_HOSTS,
 } EphyHistoryServiceMessageType;
 
 enum {
@@ -509,6 +510,24 @@ ephy_history_service_execute_find_visits (EphyHistoryService *self, EphyHistoryQ
   return TRUE;
 }
 
+static gboolean
+ephy_history_service_execute_populate_hosts (EphyHistoryService *self,
+                                             GList *hosts, gpointer *result)
+{
+  GList *current = hosts;
+
+  while (current) {
+    EphyHistoryHost *host = (EphyHistoryHost *) current->data;
+    if (NULL == ephy_history_service_get_host_row (self, NULL, host)) {
+      g_error ("Error retrieving a host.\n");
+      return FALSE;
+    }
+    current = current->next;
+  }
+  *result = hosts;
+  return TRUE;
+}
+
 void
 ephy_history_service_add_visit (EphyHistoryService *self, EphyHistoryPageVisit *visit, EphyHistoryJobCallback callback, gpointer user_data)
 {
@@ -572,6 +591,20 @@ ephy_history_service_query_urls (EphyHistoryService *self, EphyHistoryQuery *que
   ephy_history_service_send_message (self, message);
 }
 
+void
+ephy_history_service_populate_hosts (EphyHistoryService *self,
+                                     GList *hosts,
+                                     EphyHistoryJobCallback callback,
+                                     gpointer user_data)
+{
+  EphyHistoryServiceMessage *message;
+
+  message = ephy_history_service_message_new (self, POPULATE_HOSTS,
+                                              hosts, NULL,
+                                              callback, user_data);
+  ephy_history_service_send_message (self, message);
+}
+
 static gboolean
 ephy_history_service_execute_set_url_title (EphyHistoryService *self,
                                             EphyHistoryURL *url,
@@ -780,7 +813,8 @@ static EphyHistoryServiceMethod methods[] = {
   (EphyHistoryServiceMethod)ephy_history_service_execute_get_url,
   (EphyHistoryServiceMethod)ephy_history_service_execute_get_host_for_url,
   (EphyHistoryServiceMethod)ephy_history_service_execute_query_urls,
-  (EphyHistoryServiceMethod)ephy_history_service_execute_find_visits
+  (EphyHistoryServiceMethod)ephy_history_service_execute_find_visits,
+  (EphyHistoryServiceMethod)ephy_history_service_execute_populate_hosts
 };
 
 static void
diff --git a/lib/history/ephy-history-service.h b/lib/history/ephy-history-service.h
index 64cab0c..1fe5740 100644
--- a/lib/history/ephy-history-service.h
+++ b/lib/history/ephy-history-service.h
@@ -66,6 +66,7 @@ void                     ephy_history_service_query_urls              (EphyHisto
 void                     ephy_history_service_set_url_title           (EphyHistoryService *self, const char *url, const char *title, EphyHistoryJobCallback callback, gpointer user_data);
 void                     ephy_history_service_set_url_zoom_level      (EphyHistoryService *self, const char *url, const double zoom_level, EphyHistoryJobCallback callback, gpointer user_data);
 void                     ephy_history_service_get_host_for_url        (EphyHistoryService *self, const char *url, EphyHistoryJobCallback callback, gpointer user_data);
+void                     ephy_history_service_populate_hosts          (EphyHistoryService *self, GList *hosts, EphyHistoryJobCallback callback, gpointer user_data);
 void                     ephy_history_service_get_url                 (EphyHistoryService *self, const char *url, EphyHistoryJobCallback callback, gpointer user_data);
 void                     ephy_history_service_delete_urls             (EphyHistoryService *self, GList *urls, EphyHistoryJobCallback callback, gpointer user_data);
 void                     ephy_history_service_find_urls               (EphyHistoryService *self, gint64 from, gint64 to, guint limit, GList *substring_list, EphyHistoryJobCallback callback, gpointer user_data);



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