| 262 | } |
| 263 | |
| 264 | optional<UserTrackInfo> ParseLogRecord(string const & record, TemporaryFile & tmpArchiveFile) |
| 265 | { |
| 266 | vector<string> items; |
| 267 | boost::split(items, record, boost::is_any_of("\t")); |
| 268 | |
| 269 | if (items.size() != kTrackRecordSize) |
| 270 | { |
| 271 | LOG(LERROR, ("Bad log record: ", record)); |
| 272 | return nullopt; |
| 273 | } |
| 274 | |
| 275 | optional<Track> track = ParseTrackArchiveData(items[kTrackRecordDataIndex], tmpArchiveFile); |
| 276 | |
| 277 | if (track) |
| 278 | return optional<UserTrackInfo>({items[kTrackRecordUserIdIndex], std::move(*track)}); |
| 279 | |
| 280 | return nullopt; |
| 281 | } |
| 282 | |
| 283 | } // namespace details |
| 284 | |