From af57146103f41a2f987a4f54e36f2872ff5ac0bc Mon Sep 17 00:00:00 2001 From: Alexandre Savard <alexandresavard@msavard.(none)> Date: Wed, 22 Jun 2011 13:37:40 -0400 Subject: [PATCH] #6251: Add start_time timestamp in history serialization --- sflphone-client-gnome/src/callable_obj.c | 30 ++++++++++++--------- sflphone-client-gnome/src/conference_obj.c | 29 +++++++++++--------- sflphone-common/src/history/historyitem.cpp | 19 ++++++++----- 3 files changed, 46 insertions(+), 32 deletions(-) diff --git a/sflphone-client-gnome/src/callable_obj.c b/sflphone-client-gnome/src/callable_obj.c index d37d449bc4..a81a0d1b89 100644 --- a/sflphone-client-gnome/src/callable_obj.c +++ b/sflphone-client-gnome/src/callable_obj.c @@ -298,19 +298,17 @@ 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, gchar **ptr, callable_obj_t **call) +void create_history_entry_from_serialized_form (gchar *timestamp UNUSED, gchar **ptr, callable_obj_t **call) { gchar *peer_name = ""; - gchar *peer_number = "", *accountID = "", *time_stop = ""; + gchar *peer_number = "", *accountID = "", *time_start = "", *time_stop = ""; gchar *recordfile = ""; callable_obj_t *new_call; history_state_t history_state = MISSED; - const gchar *delim = "|"; gint token = 0; // details is in serialized form, i e: calltype%to%from%callid - - while (ptr != NULL && token < 6) { + while (ptr != NULL && token < 7) { switch (token) { case 0: history_state = get_history_state_from_id (*ptr); @@ -322,12 +320,15 @@ void create_history_entry_from_serialized_form (gchar *timestamp, gchar **ptr, c peer_name = *ptr; break; case 3: + time_start = *ptr; + break; + case 4: time_stop = *ptr; break; - case 4: + case 5: accountID = *ptr; break; - case 5: + case 6: recordfile = *ptr; default: break; @@ -343,7 +344,7 @@ void create_history_entry_from_serialized_form (gchar *timestamp, gchar **ptr, c create_new_call (HISTORY_ENTRY, CALL_STATE_DIALING, "", accountID, peer_name, peer_number, &new_call); new_call->_history_state = history_state; - new_call->_time_start = convert_gchar_to_timestamp (timestamp); + new_call->_time_start = convert_gchar_to_timestamp (time_start); new_call->_time_stop = convert_gchar_to_timestamp (time_stop); new_call->_recordfile = g_strdup(recordfile); @@ -448,14 +449,16 @@ gchar* serialize_history_call_entry (callable_obj_t *entry) { // "0|514-276-5468|Savoir-faire Linux|144562458" for instance - gchar* result; - gchar* separator = "|"; - gchar* history_state, *timestamp; + gchar *result = ""; + gchar *separator = "|"; + gchar *history_state = "", *time_start = "", *time_stop = ""; // Need the string form for the history state history_state = get_history_id_from_state (entry->_history_state); // and the timestamps - timestamp = convert_timestamp_to_gchar (entry->_time_stop); + time_start = convert_timestamp_to_gchar (entry->_time_start); + time_stop = convert_timestamp_to_gchar (entry->_time_stop); + gchar* peer_name = (entry->_peer_name == NULL || g_strcasecmp (entry->_peer_name,"") == 0) ? "empty": entry->_peer_name; gchar* account_id = (entry->_accountID == NULL || g_strcasecmp (entry->_accountID,"") == 0) ? "empty": entry->_accountID; @@ -463,7 +466,8 @@ gchar* serialize_history_call_entry (callable_obj_t *entry) result = g_strconcat (history_state, separator, entry->_peer_number, separator, peer_name, separator, - timestamp, separator, + time_start, separator, + time_stop, separator, account_id, separator, entry->_recordfile ? entry->_recordfile : "", NULL); diff --git a/sflphone-client-gnome/src/conference_obj.c b/sflphone-client-gnome/src/conference_obj.c index 94ba6db828..2eb3abc3fb 100644 --- a/sflphone-client-gnome/src/conference_obj.c +++ b/sflphone-client-gnome/src/conference_obj.c @@ -210,17 +210,18 @@ void conference_participant_list_update (gchar** participants, conference_obj_t* gchar *serialize_history_conference_entry(conference_obj_t *entry) { - gchar *result; + gchar *result = ""; gchar *separator = "|"; - gchar *sep; - gchar *timestamp; - gchar *peer_name; + gchar *time_start = ""; + gchar *time_stop = ""; + gchar *peer_name = ""; gchar *numberstr = ""; GSList *number_list; gint length = 0; gint i; - timestamp = convert_timestamp_to_gchar(entry->_time_stop); + time_start = convert_timestamp_to_gchar(entry->_time_start); + time_stop = convert_timestamp_to_gchar(entry->_time_stop); peer_name = (entry->_confID == NULL || g_strcasecmp(entry->_confID, "") == 0) ? "empty": entry->_confID; @@ -235,13 +236,14 @@ gchar *serialize_history_conference_entry(conference_obj_t *entry) numberstr = g_strconcat(numberstr, tmp, ";", NULL); - DEBUG("Print: %s concat: %s", tmp, numberstr); + DEBUG("Conference: Participant number: %s, concatenation: %s", tmp, numberstr); } result = g_strconcat("2188", separator, numberstr, separator, // peer number peer_name, separator, - timestamp, separator, + time_start, separator, + time_stop, separator, "", separator, // peer AccountID entry->_recordfile ? entry->_recordfile : "", NULL); @@ -250,14 +252,14 @@ gchar *serialize_history_conference_entry(conference_obj_t *entry) return result; } -void create_conference_history_entry_from_serialized(gchar *timestamp, gchar **ptr, conference_obj_t **conf) +void create_conference_history_entry_from_serialized(gchar *timestamp UNUSED, gchar **ptr, conference_obj_t **conf) { - gchar *conference_id = ""; history_state_t history_state = MISSED; gint token = 0; conference_state_t state = CONFERENCE_STATE_ACTIVE_ATACHED; gchar *participant = ""; gchar *name = ""; + gchar *time_start = ""; gchar *time_stop = ""; gchar *accountID = ""; gchar *recordfile = ""; @@ -268,7 +270,7 @@ void create_conference_history_entry_from_serialized(gchar *timestamp, gchar **p // create a new empty conference create_new_conference(state, confID, conf); - while(ptr != NULL && token < 6) { + while(ptr != NULL && token < 7) { switch(token) { case 0: history_state = MISSED; @@ -281,12 +283,15 @@ void create_conference_history_entry_from_serialized(gchar *timestamp, gchar **p name = *ptr; break; case 3: - time_stop = *ptr; + time_start = *ptr; break; case 4: - accountID = *ptr; + time_stop = *ptr; break; case 5: + accountID = *ptr; + break; + case 6: recordfile = *ptr; break; default: diff --git a/sflphone-common/src/history/historyitem.cpp b/sflphone-common/src/history/historyitem.cpp index b4ec1c8b23..c0d893c019 100644 --- a/sflphone-common/src/history/historyitem.cpp +++ b/sflphone-common/src/history/historyitem.cpp @@ -54,7 +54,7 @@ HistoryItem::HistoryItem (std::string timestamp, std::string serialized_form) : _timestamp_start (timestamp) { size_t pos; - std::string tmp, id, name, number, stop, account, recordFile; + std::string tmp, id, name, number, start, stop, account, recordFile; int indice=0; while (serialized_form.find (ITEM_SEPARATOR, 0) != std::string::npos) { @@ -75,15 +75,19 @@ HistoryItem::HistoryItem (std::string timestamp, std::string serialized_form) name = tmp; _error("Unserialized name: %s", tmp.c_str()); break; - case 3: // The end timestamp - _error("Unserialized timestamp: %s", tmp.c_str()); - stop = tmp; + case 3: // The start timestamp + _error("Unserialized time start: %s", tmp.c_str()); + start = tmp; break; - case 4: // The account ID + case 4: // The end timestamp + _error("Unserialized time stop: %s", tmp.c_str()); + stop = tmp; + break; + case 5: // The account ID _error("Unserialized account: %s", tmp.c_str()); account = tmp; break; - case 5: // The recorded file name + case 6: // The recorded file name _error("Unserialized recordfile: %s", tmp.c_str()); recordFile = tmp; break; @@ -120,6 +124,7 @@ bool HistoryItem::save (Conf::ConfigTree **history) call_type << _call_type; res = ( (*history)->setConfigTreeItem (section, "type", call_type.str()) + && (*history)->setConfigTreeItem (section, "timestamp_start", _timestamp_start) && (*history)->setConfigTreeItem (section, "timestamp_stop", _timestamp_stop) && (*history)->setConfigTreeItem (section, "number", _number) && (*history)->setConfigTreeItem (section, "accountid", _account_id) @@ -142,7 +147,7 @@ std::string HistoryItem::serialize (void) (_account_id == "" || non_valid_account (_account_id)) ? accountID = "empty" : accountID = _account_id; // Serialize it - res << _call_type << separator << _number << separator << name << separator << _timestamp_stop << separator << accountID + res << _call_type << separator << _number << separator << name << separator << _timestamp_start << separator << _timestamp_stop << separator << accountID << separator << _recording_file; return res.str(); -- GitLab