| 119 | } |
| 120 | |
| 121 | void QuerySaver::Deserialize(string const & data) |
| 122 | { |
| 123 | string decodedData = base64::Decode(data); |
| 124 | SecureMemReader rawReader(decodedData.c_str(), decodedData.size()); |
| 125 | ReaderSource<SecureMemReader> reader(rawReader); |
| 126 | |
| 127 | Length queriesCount = ReadPrimitiveFromSource<Length>(reader); |
| 128 | queriesCount = min(queriesCount, kMaxSuggestionsCount); |
| 129 | |
| 130 | for (Length i = 0; i < queriesCount; ++i) |
| 131 | { |
| 132 | Length localeLength = ReadPrimitiveFromSource<Length>(reader); |
| 133 | vector<char> locale(localeLength); |
| 134 | if (locale.size() > 0) |
| 135 | { |
| 136 | reader.Read(&locale[0], localeLength); |
| 137 | Length stringLength = ReadPrimitiveFromSource<Length>(reader); |
| 138 | vector<char> str(stringLength); |
| 139 | if (str.size() > 0) |
| 140 | { |
| 141 | reader.Read(&str[0], stringLength); |
| 142 | m_topQueries.emplace_back(make_pair(string(&locale[0], localeLength), string(&str[0], stringLength))); |
| 143 | } |
| 144 | } |
| 145 | } |
| 146 | } |
| 147 | |
| 148 | void QuerySaver::Save() |
| 149 | { |
no test coverage detected