From 0cb75cf5b0209b1cd5078ab7df198bba91bef4d8 Mon Sep 17 00:00:00 2001
From: Alexandre Savard <alexandresavard@msavard.(none)>
Date: Wed, 22 Jun 2011 17:20:32 -0400
Subject: [PATCH] #6251: Implement history serialization using a list wether
 than a map

---
 sflphone-client-gnome/src/actions.c           | 99 ++++++-------------
 sflphone-client-gnome/src/callable_obj.c      |  2 +-
 sflphone-client-gnome/src/callable_obj.h      |  2 +-
 sflphone-client-gnome/src/conference_obj.c    |  2 +-
 sflphone-client-gnome/src/conference_obj.h    |  2 +-
 .../dbus/configurationmanager-introspec.xml   |  4 +-
 sflphone-client-gnome/src/dbus/dbus.c         | 14 +--
 sflphone-client-gnome/src/dbus/dbus.h         | 13 ++-
 .../dbus/configurationmanager-introspec.xml   |  4 +-
 .../src/dbus/configurationmanager.cpp         |  9 +-
 .../src/dbus/configurationmanager.h           |  4 +-
 sflphone-common/src/history/historyitem.cpp   | 24 +++--
 sflphone-common/src/history/historyitem.h     |  3 +-
 .../src/history/historymanager.cpp            | 47 +++++----
 sflphone-common/src/history/historymanager.h  |  6 +-
 sflphone-common/src/managerimpl.cpp           |  9 +-
 sflphone-common/src/managerimpl.h             | 12 ++-
 17 files changed, 129 insertions(+), 127 deletions(-)

diff --git a/sflphone-client-gnome/src/actions.c b/sflphone-client-gnome/src/actions.c
index 0de9195d7c..04271fc09c 100644
--- a/sflphone-client-gnome/src/actions.c
+++ b/sflphone-client-gnome/src/actions.c
@@ -1271,83 +1271,42 @@ void sflphone_fill_conference_list (void)
 
 void sflphone_fill_history (void)
 {
-    GHashTable *entries;
-    GHashTableIter iter;
-    gpointer key, value;
-    gpointer key_to_min = NULL;
+    gchar **entries, *current_entry;
     callable_obj_t *history_entry;
     conference_obj_t *conference_entry;
-    int timestamp = 0;
-    int min_timestamp = 0;
+    gchar *value;
 
-    gboolean is_first;
-
-    DEBUG ("======================================================== SFLphone: Loading history");
+    DEBUG ("======================================================= SFLphone: Loading history");
 
     entries = dbus_get_history ();
 
-    if (entries) {
-
-        while (g_hash_table_size (entries)) {
-
-            is_first = TRUE;
-
-            // find lowest timestamp in map
-            g_hash_table_iter_init (&iter, entries);
-
-            while (g_hash_table_iter_next (&iter, &key, &value))  {
-
-                timestamp = atoi ( (gchar*) key);
-
-                if (is_first) {
-
-                    // first iteration of the loop, init search
-                    min_timestamp = timestamp;
-                    key_to_min = key;
-
-                    is_first = FALSE;
-                } else {
-
-                    // if lower, replace
-                    if (timestamp < min_timestamp) {
-
-                        min_timestamp = timestamp;
-                        key_to_min = key;
-                    }
-                }
-            }
-
-            if (g_hash_table_lookup_extended (entries, key_to_min, &key, &value)) {
-
-		gchar **ptr;
-    		const gchar *delim = "|";
-
-
-	        ptr = g_strsplit(value, delim, 6);
-		if(ptr != NULL) {
-
-		    // first ptr refers to entry type
-		    if(g_strcmp0(*ptr, "2188") == 0) {
-			DEBUG("------------------------------- SFLphone: Serialized item: %s", *ptr);
-			create_conference_history_entry_from_serialized((gchar *)key, (gchar **)ptr, &conference_entry);
-			conferencelist_add (history, conference_entry);
-			conferencelist_add(current_calls, conference_entry);
-			calltree_add_conference (history, conference_entry);
-			g_hash_table_remove(entries, key_to_min);	
-		    }
-		    else {
-                        // do something with key and value
-                        create_history_entry_from_serialized_form ( (gchar*) key, (gchar **) ptr, &history_entry);
+    while (*entries) {
+    	const gchar *delim = "|";
+	gchar **ptr;
+
+        current_entry = *entries;
+
+	ptr = g_strsplit(current_entry, delim, 6);
+	if(ptr != NULL) {
+
+	    // first ptr refers to entry type
+	    if(g_strcmp0(*ptr, "2188") == 0) {
+		DEBUG("------------------------------- SFLphone: Serialized item: %s", *ptr);
+		create_conference_history_entry_from_serialized(ptr, &conference_entry);
+		conferencelist_add (history, conference_entry);
+		conferencelist_add(current_calls, conference_entry);
+		calltree_add_conference (history, conference_entry);
+	    }
+	    else {
+                // do something with key and value
+                create_history_entry_from_serialized_form (ptr, &history_entry);
                 
-		        // Add it and update the GUI
-                        calllist_add_call (history, history_entry);
-		        calltree_add_call (history, history_entry, NULL);
-                        // remove entry from map
-                        g_hash_table_remove (entries, key_to_min);
-		    }
-	        }
-            }
-        }
+		// Add it and update the GUI
+                calllist_add_call (history, history_entry);
+		calltree_add_call (history, history_entry, NULL);
+	    }
+	}
+	entries++;
     }
 
     DEBUG ("======================================================== SFLphone: Loading history ...(end)");
diff --git a/sflphone-client-gnome/src/callable_obj.c b/sflphone-client-gnome/src/callable_obj.c
index a81a0d1b89..dc297cd8cf 100644
--- a/sflphone-client-gnome/src/callable_obj.c
+++ b/sflphone-client-gnome/src/callable_obj.c
@@ -298,7 +298,7 @@ void create_new_call_from_details (const gchar *call_id, GHashTable *details, ca
     *call = new_call;
 }
 
-void create_history_entry_from_serialized_form (gchar *timestamp UNUSED, gchar **ptr, callable_obj_t **call)
+void create_history_entry_from_serialized_form (gchar **ptr, callable_obj_t **call)
 {
     gchar *peer_name = "";
     gchar *peer_number = "", *accountID = "", *time_start = "", *time_stop = "";
diff --git a/sflphone-client-gnome/src/callable_obj.h b/sflphone-client-gnome/src/callable_obj.h
index 7184eaf03d..94f4b4297c 100644
--- a/sflphone-client-gnome/src/callable_obj.h
+++ b/sflphone-client-gnome/src/callable_obj.h
@@ -171,7 +171,7 @@ void create_new_call (callable_type_t, call_state_t, gchar*, gchar*, gchar*, gch
 
 void create_new_call_from_details (const gchar *, GHashTable *, callable_obj_t **);
 
-void create_history_entry_from_serialized_form (gchar *, gchar **, callable_obj_t **);
+void create_history_entry_from_serialized_form (gchar **, callable_obj_t **);
 
 void call_add_error (callable_obj_t * call, gpointer dialog);
 
diff --git a/sflphone-client-gnome/src/conference_obj.c b/sflphone-client-gnome/src/conference_obj.c
index 2eb3abc3fb..5581dcfd72 100644
--- a/sflphone-client-gnome/src/conference_obj.c
+++ b/sflphone-client-gnome/src/conference_obj.c
@@ -252,7 +252,7 @@ gchar *serialize_history_conference_entry(conference_obj_t *entry)
     return result;
 }
 
-void create_conference_history_entry_from_serialized(gchar *timestamp UNUSED, gchar **ptr, conference_obj_t **conf)
+void create_conference_history_entry_from_serialized(gchar **ptr, conference_obj_t **conf)
 {
     history_state_t history_state = MISSED;
     gint token = 0;
diff --git a/sflphone-client-gnome/src/conference_obj.h b/sflphone-client-gnome/src/conference_obj.h
index c66071d2bc..557373d818 100644
--- a/sflphone-client-gnome/src/conference_obj.h
+++ b/sflphone-client-gnome/src/conference_obj.h
@@ -86,6 +86,6 @@ void conference_participant_list_update (gchar**, conference_obj_t*);
 
 gchar *serialize_history_conference_entry(conference_obj_t *entry);
 
-void create_conference_history_entry_from_serialized(gchar *, gchar **, conference_obj_t **);
+void create_conference_history_entry_from_serialized(gchar **, conference_obj_t **);
 
 #endif
diff --git a/sflphone-client-gnome/src/dbus/configurationmanager-introspec.xml b/sflphone-client-gnome/src/dbus/configurationmanager-introspec.xml
index 6eadae9396..66a92c3c14 100755
--- a/sflphone-client-gnome/src/dbus/configurationmanager-introspec.xml
+++ b/sflphone-client-gnome/src/dbus/configurationmanager-introspec.xml
@@ -753,7 +753,7 @@
 		   <tp:docstring>
 		   </tp:docstring>
 		   <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
-		   <arg type="a{ss}" name="entries" direction="out">
+		   <arg type="as" name="entries" direction="out">
 			   <tp:docstring>
 			   </tp:docstring>
 		   </arg>
@@ -763,7 +763,7 @@
 		   <tp:docstring>
 		   </tp:docstring>
 		   <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringString"/>
-		   <arg type="a{ss}" name="entries" direction="in">
+		   <arg type="as" name="entries" direction="in">
 			   <tp:docstring>
 			   </tp:docstring>
 		   </arg>
diff --git a/sflphone-client-gnome/src/dbus/dbus.c b/sflphone-client-gnome/src/dbus/dbus.c
index 0bc5829cb8..74f46e75c9 100644
--- a/sflphone-client-gnome/src/dbus/dbus.c
+++ b/sflphone-client-gnome/src/dbus/dbus.c
@@ -2229,30 +2229,32 @@ dbus_set_accounts_order (const gchar* order)
     }
 }
 
-GHashTable*
+gchar **
 dbus_get_history (void)
 {
     GError *error = NULL;
-    GHashTable *entries = NULL;
+    const gchar **entries = NULL;
 
     org_sflphone_SFLphone_ConfigurationManager_get_history (
-        configurationManagerProxy, &entries, &error);
+        configurationManagerProxy, (char ***)&entries, &error);
 
     if (error) {
-        ERROR ("Error calling org_sflphone_SFLphone_CallManager_get_history");
+        ERROR ("Error calling get history: %s", error->message);
         g_error_free (error);
+	return NULL;
     }
 
     return entries;
 }
 
 void
-dbus_set_history (GHashTable* entries)
+dbus_set_history (GSList *entries)
 {
     GError *error = NULL;
+    gchar **charlist = NULL;
 
     org_sflphone_SFLphone_ConfigurationManager_set_history (
-        configurationManagerProxy, entries, &error);
+        configurationManagerProxy, (const char **)charlist, &error);
 
     if (error) {
         ERROR ("Error calling org_sflphone_SFLphone_CallManager_set_history");
diff --git a/sflphone-client-gnome/src/dbus/dbus.h b/sflphone-client-gnome/src/dbus/dbus.h
index 196915d20d..c7c6e6dfd8 100644
--- a/sflphone-client-gnome/src/dbus/dbus.h
+++ b/sflphone-client-gnome/src/dbus/dbus.h
@@ -551,9 +551,18 @@ gchar** dbus_get_conference_list (void);
 
 void dbus_set_accounts_order (const gchar* order);
 
-GHashTable* dbus_get_history (void);
+/**
+ * Get a list of serialized hisotry entries
+ * @return The list of history entries
+ */
+gchar **dbus_get_history (void);
 
-void dbus_set_history (GHashTable* entries);
+/**
+ * Set the history entries into the daemon. The daemon then write teh content 
+ * of this list into the history file
+ * @param A list of serialized history entries
+ */
+void dbus_set_history (GSList *);
 
 void sflphone_display_transfer_status (const gchar* message);
 
diff --git a/sflphone-common/src/dbus/configurationmanager-introspec.xml b/sflphone-common/src/dbus/configurationmanager-introspec.xml
index 4d2ebf011f..779a3f23d7 100755
--- a/sflphone-common/src/dbus/configurationmanager-introspec.xml
+++ b/sflphone-common/src/dbus/configurationmanager-introspec.xml
@@ -754,7 +754,7 @@
 		   <tp:docstring>
 		   </tp:docstring>
 		   <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
-		   <arg type="a{ss}" name="entries" direction="out">
+		   <arg type="as" name="entries" direction="out">
 			   <tp:docstring>
 			   </tp:docstring>
 		   </arg>
@@ -764,7 +764,7 @@
 		   <tp:docstring>
 		   </tp:docstring>
 		   <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringString"/>
-		   <arg type="a{ss}" name="entries" direction="in">
+		   <arg type="as" name="entries" direction="in">
 			   <tp:docstring>
 			   </tp:docstring>
 		   </arg>
diff --git a/sflphone-common/src/dbus/configurationmanager.cpp b/sflphone-common/src/dbus/configurationmanager.cpp
index 748cf8e56b..94b29a0f2d 100644
--- a/sflphone-common/src/dbus/configurationmanager.cpp
+++ b/sflphone-common/src/dbus/configurationmanager.cpp
@@ -790,15 +790,14 @@ void ConfigurationManager::setAccountsOrder (const std::string& order)
     Manager::instance().setAccountsOrder (order);
 }
 
-std::map<std::string, std::string> ConfigurationManager::getHistory (void)
+std::vector<std::string> ConfigurationManager::getHistory (void)
 {
-    return Manager::instance().send_history_to_client();
+    return Manager::instance().getHistorySerialized();
 }
 
-void ConfigurationManager::setHistory (
-    const std::map<std::string, std::string>& entries)
+void ConfigurationManager::setHistory (const std::vector<std::string>& entries)
 {
-    Manager::instance().receive_history_from_client (entries);
+    Manager::instance().setHistorySerialized(entries);
 }
 
 std::string ConfigurationManager::getAddrFromInterfaceName (
diff --git a/sflphone-common/src/dbus/configurationmanager.h b/sflphone-common/src/dbus/configurationmanager.h
index 039d431dd4..d32bb5e27e 100644
--- a/sflphone-common/src/dbus/configurationmanager.h
+++ b/sflphone-common/src/dbus/configurationmanager.h
@@ -140,8 +140,8 @@ class ConfigurationManager
         std::map<std::string, std::string> getHookSettings (void);
         void setHookSettings (const std::map<std::string, std::string>& settings);
 
-        std::map <std::string, std::string> getHistory (void);
-        void setHistory (const std::map <std::string, std::string>& entries);
+	std::vector<std::string> getHistory(void);
+        void setHistory (const std::vector<std::string> &entries);
 
         std::map<std::string, std::string> getTlsSettings (void);
         void setTlsSettings (const std::map< std::string, std::string >& details);
diff --git a/sflphone-common/src/history/historyitem.cpp b/sflphone-common/src/history/historyitem.cpp
index c0d893c019..333959a98b 100644
--- a/sflphone-common/src/history/historyitem.cpp
+++ b/sflphone-common/src/history/historyitem.cpp
@@ -50,8 +50,7 @@ HistoryItem::HistoryItem (std::string timestamp_start, CallType call_type, std::
 }
 
 
-HistoryItem::HistoryItem (std::string timestamp, std::string serialized_form)
-    : _timestamp_start (timestamp)
+HistoryItem::HistoryItem (std::string serialized_form)
 {
     size_t pos;
     std::string tmp, id, name, number, start, stop, account, recordFile;
@@ -69,26 +68,26 @@ HistoryItem::HistoryItem (std::string timestamp, std::string serialized_form)
                 break;
             case 1: // The number field
                 number = tmp;
-		_error("Unserialized number: %s", tmp.c_str());
+		_error("Serialized number: %s", tmp.c_str());
                 break;
             case 2: // The name field
                 name = tmp;
-		_error("Unserialized name: %s", tmp.c_str());
+		_error("Serialized name: %s", tmp.c_str());
                 break;
             case 3: // The start timestamp
-		_error("Unserialized time start: %s", tmp.c_str());
+		_error("Serialized time start: %s", tmp.c_str());
                 start = tmp;
                 break;
 	    case 4: // The end timestamp
-		_error("Unserialized time stop: %s", tmp.c_str());
+		_error("Serialized time stop: %s", tmp.c_str());
 		stop = tmp;
 		break;
             case 5: // The account ID
-		_error("Unserialized account: %s", tmp.c_str());
+		_error("Serialized account: %s", tmp.c_str());
                 account = tmp;
                 break;
             case 6: // The recorded file name
-		_error("Unserialized recordfile: %s", tmp.c_str());
+		_error("Serialized recordfile: %s", tmp.c_str());
 		recordFile = tmp;
 		break;
             default: // error
@@ -103,6 +102,7 @@ HistoryItem::HistoryItem (std::string timestamp, std::string serialized_form)
 
     _number = number;
     (name == EMPTY_STRING) ? _name = "" : _name = name;
+    _timestamp_start = start;
     _timestamp_stop = stop;
     (serialized_form == EMPTY_STRING) ? _account_id = "" : _account_id=tmp;
 }
@@ -123,6 +123,14 @@ bool HistoryItem::save (Conf::ConfigTree **history)
     section = get_timestamp ();
     call_type << _call_type;
 
+    _error("Unserialized type: %s", call_type.str().c_str());
+    _error("Unserialized time start: %s", _timestamp_start.c_str());
+    _error("Unserialized time stop: %s", _timestamp_stop.c_str());
+    _error("Unserialized number: %s", _number.c_str());
+    _error("Unserialized account: %s", _account_id.c_str());
+    _error("Unserialized name: %s", _name.c_str());
+    _error("Unserialized record file: %s", _recording_file.c_str());
+
     res = ( (*history)->setConfigTreeItem (section, "type", call_type.str())
 	    && (*history)->setConfigTreeItem (section, "timestamp_start", _timestamp_start)
             && (*history)->setConfigTreeItem (section, "timestamp_stop", _timestamp_stop)
diff --git a/sflphone-common/src/history/historyitem.h b/sflphone-common/src/history/historyitem.h
index 84b10a3a4e..463321513d 100644
--- a/sflphone-common/src/history/historyitem.h
+++ b/sflphone-common/src/history/historyitem.h
@@ -63,8 +63,9 @@ class HistoryItem
 
         /*
          * Constructor from a serialized form
+	 * @string contaning serialized form
          */
-        HistoryItem (std::string, std::string="");
+        HistoryItem (std::string="");
 
         /*
          * Destructor
diff --git a/sflphone-common/src/history/historymanager.cpp b/sflphone-common/src/history/historymanager.cpp
index 8ef22ed175..4e8dd0a8af 100644
--- a/sflphone-common/src/history/historymanager.cpp
+++ b/sflphone-common/src/history/historymanager.cpp
@@ -49,7 +49,7 @@ HistoryManager::~HistoryManager ()
     HistoryItem * item;
 
     while (iter != _history_items.end()) {
-        item = iter->second;
+        item = *iter;
         delete item;
         iter++;
     }
@@ -113,13 +113,19 @@ int HistoryManager::load_history_items_map (Conf::ConfigTree *history_list, int
     while (iter != sections.end()) {
 
         type = (CallType) getConfigInt (*iter, "type", history_list);
+	timestamp_start = getConfigString (*iter, "timestamp_start", history_list); 
         timestamp_stop = getConfigString (*iter, "timestamp_stop", history_list);
         name = getConfigString (*iter, "name", history_list);
         number = getConfigString (*iter, "number", history_list);
         accountID = getConfigString (*iter, "accountid", history_list);
         recording_file = getConfigString(*iter, "recordfile", history_list);
-        
-        timestamp_start = *iter;
+
+    	_error("Unserialized time start: %s", timestamp_start.c_str());
+    	_error("Unserialized time stop: %s", timestamp_stop.c_str());
+    	_error("Unserialized number: %s", number.c_str());
+    	_error("Unserialized account: %s", accountID.c_str());
+    	_error("Unserialized name: %s", name.c_str());
+    	_error("Unserialized record file: %s", recording_file.c_str());
 
         // Make a check on the start timestamp to know it is loadable according to CONFIG_HISTORY_LIMIT
 
@@ -138,7 +144,7 @@ int HistoryManager::load_history_items_map (Conf::ConfigTree *history_list, int
 
 bool HistoryManager::save_history_to_file (Conf::ConfigTree *history_list)
 {
-    _debug ("Saving history in XDG directory: %s", _history_path.data());
+    _debug ("HistoryManager: Saving history in XDG directory: %s", _history_path.data());
     return  history_list->saveConfigTree (_history_path.data());
 }
 
@@ -152,7 +158,7 @@ int HistoryManager::save_history_items_map (Conf::ConfigTree *history_list)
     iter = _history_items.begin ();
 
     while (iter != _history_items.end ()) {
-        item = iter->second;
+        item = *iter;
 
         if (item) {
             if (item->save (&history_list))
@@ -170,7 +176,7 @@ int HistoryManager::save_history_items_map (Conf::ConfigTree *history_list)
 void HistoryManager::add_new_history_entry (HistoryItem *new_item)
 {
     // Add it in the map
-    _history_items [new_item->get_timestamp () ] = new_item;
+    _history_items.push_back(new_item);
 }
 
 int HistoryManager::create_history_path (std::string path)
@@ -194,7 +200,7 @@ int HistoryManager::create_history_path (std::string path)
         if (mkdir (userdata.data(), 0755) != 0) {
             // If directory	creation failed
             if (errno != EEXIST) {
-                _debug ("Cannot create directory: %s", strerror (errno));
+                _debug ("HistoryManager: Cannot create directory: %s", strerror (errno));
                 return -1;
             }
         }
@@ -233,22 +239,22 @@ HistoryManager::getConfigString (const std::string& section, const std::string&
     return "";
 }
 
-std::map <std::string, std::string> HistoryManager::get_history_serialized (void)
+std::vector<std::string> HistoryManager::get_history_serialized (void)
 {
-    std::map <std::string, std::string> serialized;
+    std::vector<std::string> serialized;
     HistoryItemMap::iterator iter;
     HistoryItem *current;
-    std::string res, key;
+    std::string res;
 
     iter = _history_items.begin ();
 
     while (iter != _history_items.end()) {
-        current = iter->second;
+        current = *iter;
 
         if (current) {
-            key = current->get_timestamp ();
             res = current->serialize ();
-            serialized [key] = res;
+	    _error("%s", res.c_str());
+            serialized.push_back(res);
         }
 
         iter ++;
@@ -258,9 +264,9 @@ std::map <std::string, std::string> HistoryManager::get_history_serialized (void
 }
 
 
-int HistoryManager::set_serialized_history (std::map <std::string, std::string> history, int limit)
+int HistoryManager::set_serialized_history (std::vector<std::string> history, int limit)
 {
-    std::map <std::string, std::string>::iterator iter;
+    std::vector<std::string>::iterator iter;
     HistoryItem *new_item;
     int items_added = 0;
     int history_limit;
@@ -276,11 +282,18 @@ int HistoryManager::set_serialized_history (std::map <std::string, std::string>
     iter = history.begin ();
 
     while (iter != history.end ()) {
-        if (atoi (iter->first.c_str ()) >= ( (int) current_timestamp - history_limit)) {
-            new_item = new HistoryItem (iter->first, iter->second);
+	new_item = new HistoryItem(*iter);
+	if(new_item == NULL) {
+	    _error("HistoryManager: Error: Could not create history item");
+ 	}
+	int item_timestamp = atoi(new_item->get_timestamp().c_str());
+        if (item_timestamp >= ( (int) current_timestamp - history_limit)) {
             add_new_history_entry (new_item);
             items_added ++;
         }
+	else {
+	    delete new_item;
+  	}
 
         iter ++;
     }
diff --git a/sflphone-common/src/history/historymanager.h b/sflphone-common/src/history/historymanager.h
index f34e2ace26..49340a10af 100644
--- a/sflphone-common/src/history/historymanager.h
+++ b/sflphone-common/src/history/historymanager.h
@@ -39,7 +39,7 @@
 
 #define DAY_UNIX_TIMESTAMP      86400   // Number of seconds in one day: 60 x 60 x 24
 
-typedef std::map <std::string, HistoryItem*> HistoryItemMap;
+typedef std::vector <HistoryItem *> HistoryItemMap;
 
 class HistoryManager
 {
@@ -105,9 +105,9 @@ class HistoryManager
             return _history_items.size ();
         }
 
-        std::map <std::string, std::string> get_history_serialized (void);
+        std::vector<std::string> get_history_serialized (void);
 
-        int set_serialized_history (std::map <std::string, std::string> history, int limit);
+        int set_serialized_history (std::vector<std::string> history, int limit);
 
     private:
         int get_unix_timestamp_equivalent (int days) const {
diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index 3cfa981f5f..11135e5537 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -4560,15 +4560,18 @@ std::map<std::string, std::string> ManagerImpl::getCallDetails (const CallID& ca
     return call_details;
 }
 
-std::map<std::string, std::string> ManagerImpl::send_history_to_client (void)
+std::vector<std::string> ManagerImpl::getHistorySerialized(void)
 {
+    _debug("Manager: Get history serialized"); 
+
     return _history->get_history_serialized();
 }
 
-void ManagerImpl::receive_history_from_client (std::map<std::string,
-        std::string> history)
+void ManagerImpl::setHistorySerialized(std::vector<std::string> history)
 {
 
+    _debug("Manager: Set history serialized");
+
     _history->set_serialized_history (history, preferences.getHistoryLimit());;
     _history->save_history();
 }
diff --git a/sflphone-common/src/managerimpl.h b/sflphone-common/src/managerimpl.h
index da0e1cda0b..460f92f8c7 100644
--- a/sflphone-common/src/managerimpl.h
+++ b/sflphone-common/src/managerimpl.h
@@ -1426,9 +1426,17 @@ class ManagerImpl
         */
         bool accountExists (const AccountID& accountID);
 
-        std::map<std::string, std::string> send_history_to_client (void);
+	/**
+	 * Get a list of serialized history entries
+	 * @return A list of serialized entry
+  	 */
+        std::vector<std::string> getHistorySerialized (void);
 
-        void receive_history_from_client (std::map<std::string, std::string> history);
+	/**
+	 * Set a list of serialized history entries
+	 * @param Vector of history entries
+         */
+	void setHistorySerialized (std::vector<std::string> history);
         /**
          * Get an account pointer
          * @param accountID account ID to get
-- 
GitLab