MCPcopy Create free account
hub / github.com/comaps/comaps / NotifyCallback

Method NotifyCallback

libs/map/gps_track.cpp:294–339  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

292}
293
294void GpsTrack::NotifyCallback(pair<size_t, size_t> const & addedIds, pair<size_t, size_t> const & evictedIds)
295{
296 lock_guard<mutex> lg(m_callbackGuard);
297
298 if (!m_callback)
299 return;
300
301 if (m_needSendSnapshop)
302 {
303 m_needSendSnapshop = false;
304
305 vector<pair<size_t, location::GpsInfo>> toAdd;
306 toAdd.reserve(m_collection->GetSize());
307 m_collection->ForEach([&toAdd](location::GpsInfo const & point, size_t id) -> bool
308 {
309 toAdd.emplace_back(id, point);
310 return true;
311 });
312
313 if (toAdd.empty())
314 return; // nothing to send
315
316 m_callback(std::move(toAdd), make_pair(kInvalidId, kInvalidId), m_collection->GetTrackStatistics());
317 }
318 else
319 {
320 vector<pair<size_t, location::GpsInfo>> toAdd;
321 if (addedIds.first != kInvalidId)
322 {
323 size_t const addedCount = addedIds.second - addedIds.first + 1;
324 ASSERT_GREATER_OR_EQUAL(m_collection->GetSize(), addedCount, ());
325 toAdd.reserve(addedCount);
326 m_collection->ForEach([&toAdd](location::GpsInfo const & point, size_t id) -> bool
327 {
328 toAdd.emplace_back(id, point);
329 return true;
330 }, m_collection->GetSize() - addedCount);
331 ASSERT_EQUAL(toAdd.size(), addedCount, ());
332 }
333
334 if (toAdd.empty() && evictedIds.first == kInvalidId)
335 return; // nothing to send
336
337 m_callback(std::move(toAdd), evictedIds, m_collection->GetTrackStatistics());
338 }
339}

Callers

nothing calls this directly

Calls 7

reserveMethod · 0.45
GetSizeMethod · 0.45
ForEachMethod · 0.45
emplace_backMethod · 0.45
emptyMethod · 0.45
GetTrackStatisticsMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected