diff --git a/daemon/src/history/historyitem.cpp b/daemon/src/history/historyitem.cpp index 1015d25648c410cdaa1c9f32368d1a0e93e73422..cb10700f73b0ac060e779cb2afb5b69f7990ed65 100644 --- a/daemon/src/history/historyitem.cpp +++ b/daemon/src/history/historyitem.cpp @@ -36,7 +36,6 @@ #include <manager.h> #define ITEM_SEPARATOR "|" -#define EMPTY_STRING "empty" HistoryItem::HistoryItem (std::string timestamp_start, CallType call_type, std::string timestamp_stop, std::string name, std::string number, std::string id, std::string account_id, std::string recording, std::string confID, std::string timeAdded) : _timestamp_start (timestamp_start), @@ -55,57 +54,40 @@ HistoryItem::HistoryItem (std::string timestamp_start, CallType call_type, std:: HistoryItem::HistoryItem (std::string serialized_form) { - size_t pos; - std::string tmp, type, name, number, start, stop, id, account, recordFile; - std::string confID, timeAdded; int indice = 0; while (serialized_form.find (ITEM_SEPARATOR, 0) != std::string::npos) { - pos = serialized_form.find (ITEM_SEPARATOR, 0); - tmp = serialized_form.substr (0, pos); + size_t pos = serialized_form.find (ITEM_SEPARATOR, 0); + std::string tmp = serialized_form.substr (0, pos); serialized_form.erase (0, pos + 1); switch (indice) { - case 0: // The call type - type = tmp; - _error("Unserialized type: %s", tmp.c_str()); - break; - case 1: // The number field - number = tmp; - _error("Serialized number: %s", tmp.c_str()); - break; - case 2: // The name field - name = tmp; - _error("Serialized name: %s", tmp.c_str()); - break; - case 3: // The start timestamp - _error("Serialized time start: %s", tmp.c_str()); - start = tmp; - break; - case 4: // The end timestamp - _error("Serialized time stop: %s", tmp.c_str()); - stop = tmp; - break; - case 5: // The ID - _error("Serialized id: %s", tmp.c_str()); - id = tmp; - break; - case 6: // The account ID - _error("Serialized account: %s", tmp.c_str()); - account = tmp; - break; - case 7: // The recorded file name - _error("Serialized recordfile: %s", tmp.c_str()); - recordFile = tmp; - break; - case 8: // The conference ID - _error("Serialized conferenceID: %s", tmp.c_str()); - confID = tmp; - break; - case 9: // The time - _error("Serialized timeadded: %s", tmp.c_str()); - timeAdded = tmp; - break; + case 0: // The call type + _call_type = (CallType) atoi (tmp.c_str()); + break; + case 1: // The number field + _number = tmp; + break; + case 2: // The name field + _name = tmp; + if (_name == "empty") + _name = ""; + break; + case 3: // The start timestamp + _timestamp_start = tmp; + break; + case 6: // The account ID + _account_id = tmp; + break; + case 7: // The recorded file name + _recording_file = tmp; + break; + case 8: // The conference ID + _confID = tmp; + break; + case 9: // The time + _timeAdded = tmp; + break; default: // error _error("Unserialized form %d not recognized\n", indice); break; @@ -114,21 +96,8 @@ HistoryItem::HistoryItem (std::string serialized_form) indice ++; } - _id = id; - - _call_type = (CallType) atoi (type.c_str()); - - _number = number; - (name == EMPTY_STRING) ? _name = "" : _name = name; - _timestamp_start = start; - _timestamp_stop = stop; - // (serialized_form == EMPTY_STRING) ? _account_id = "" : _account_id = tmp; - _account_id = account; - - _confID = confID; - _timeAdded = timeAdded; - - _recording_file = recordFile; + _id = ""; + _timestamp_stop = ""; } HistoryItem::~HistoryItem () @@ -140,17 +109,14 @@ bool HistoryItem::save (Conf::ConfigTree **history) { std::stringstream section; std::stringstream call_type; - std::string sectionstr; - bool res; // The section is : "[" + timestamp = "]" section << rand(); + std::string sectionstr = section.str(); call_type << _call_type; - sectionstr = section.str(); - - _error("-- Unserialized type: %s", call_type.str().c_str()); /* + _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()); @@ -162,35 +128,36 @@ bool HistoryItem::save (Conf::ConfigTree **history) _error("-- Unserialized time added: %s", _timeAdded.c_str()); */ - res = ( (*history)->setConfigTreeItem (sectionstr, "type", call_type.str()) + return (*history)->setConfigTreeItem (sectionstr, "type", call_type.str()) && (*history)->setConfigTreeItem (sectionstr, "timestamp_start", _timestamp_start) - && (*history)->setConfigTreeItem (sectionstr, "timestamp_stop", _timestamp_stop) - && (*history)->setConfigTreeItem (sectionstr, "number", _number) + && (*history)->setConfigTreeItem (sectionstr, "timestamp_stop", _timestamp_stop) + && (*history)->setConfigTreeItem (sectionstr, "number", _number) && (*history)->setConfigTreeItem (sectionstr, "id", _id) - && (*history)->setConfigTreeItem (sectionstr, "accountid", _account_id) - && (*history)->setConfigTreeItem (sectionstr, "name", _name) + && (*history)->setConfigTreeItem (sectionstr, "accountid", _account_id) + && (*history)->setConfigTreeItem (sectionstr, "name", _name) && (*history)->setConfigTreeItem (sectionstr, "recordfile", _recording_file) && (*history)->setConfigTreeItem (sectionstr, "confid", _confID) - && (*history)->setConfigTreeItem (sectionstr, "timeadded", _timeAdded)); - - return res; + && (*history)->setConfigTreeItem (sectionstr, "timeadded", _timeAdded); } std::string HistoryItem::serialize (void) { std::stringstream res; - std::string separator = ITEM_SEPARATOR; - std::string name, accountID; // Replace empty string with a valid standard string value - (_name == "") ? name = EMPTY_STRING : name = _name; + std::string name(_name); + if (name == "") + name = "empty"; + // For the account ID, check also if the accountID corresponds to an existing account // ie the account may have been removed - (_account_id == "" || non_valid_account (_account_id)) ? accountID = "empty" : accountID = _account_id; + std::string accountID(_account_id); + if (_account_id == "" || non_valid_account (_account_id)) + accountID = "empty"; // Serialize it - res << _call_type << separator << _number << separator << name << separator << _timestamp_start << separator << _timestamp_stop - << separator << _id << separator << accountID << separator << _recording_file << separator << _confID << separator << _timeAdded; + res << _call_type << ITEM_SEPARATOR << _number << ITEM_SEPARATOR << name << ITEM_SEPARATOR << _timestamp_start << ITEM_SEPARATOR << _timestamp_stop + << ITEM_SEPARATOR << _id << ITEM_SEPARATOR << accountID << ITEM_SEPARATOR << _recording_file << ITEM_SEPARATOR << _confID << ITEM_SEPARATOR << _timeAdded; return res.str(); } diff --git a/daemon/src/history/historymanager.cpp b/daemon/src/history/historymanager.cpp index 94daa804133f481f11fb10470a3d31feac892187..5980fa43dbb69f2f9a699aed73086d1fa775fe64 100644 --- a/daemon/src/history/historymanager.cpp +++ b/daemon/src/history/historymanager.cpp @@ -243,22 +243,13 @@ std::vector<std::string> HistoryManager::get_history_serialized (void) { std::vector<std::string> serialized; HistoryItemMap::iterator iter; - HistoryItem *current; - std::string res; _debug("HistoryManager: Get history serialized"); - iter = _history_items.begin (); - - while (iter != _history_items.end()) { - current = *iter; - - if (current) { - res = current->serialize (); - serialized.push_back(res); - } - - iter ++; + for (iter = _history_items.begin (); iter != _history_items.end(); ++iter) { + HistoryItem *current = *iter; + if (current) + serialized.push_back(current->serialize ()); } return serialized;