diff options
author | Arsentiy Milchakov <milcars@mapswithme.com> | 2018-10-26 14:41:27 +0300 |
---|---|---|
committer | Tatiana Yan <tatiana.kondakova@gmail.com> | 2018-10-26 17:10:18 +0300 |
commit | 3d481801c1de0830d56def278385fa3bd6434bdb (patch) | |
tree | 92caa8721d9cdc121b7623a96c4b7297f573cf79 /metrics | |
parent | 424354cf3d2c92e3d8e77692c2cd929188894535 (diff) |
[eye] review fixes
Diffstat (limited to 'metrics')
-rw-r--r-- | metrics/eye.cpp | 93 | ||||
-rw-r--r-- | metrics/eye.hpp | 21 | ||||
-rw-r--r-- | metrics/eye_info.hpp | 14 | ||||
-rw-r--r-- | metrics/eye_storage.cpp | 5 | ||||
-rw-r--r-- | metrics/metrics_tests_support/eye_for_testing.hpp | 5 |
5 files changed, 94 insertions, 44 deletions
diff --git a/metrics/eye.cpp b/metrics/eye.cpp index 882b07f2fa..909ec5b98d 100644 --- a/metrics/eye.cpp +++ b/metrics/eye.cpp @@ -90,16 +90,21 @@ Eye::InfoType Eye::GetInfo() const void Eye::Subscribe(Subscriber * subscriber) { - GetPlatform().RunTask(Platform::Thread::File, [this, subscriber] - { - m_subscribers.push_back(subscriber); - }); + m_subscribers.push_back(subscriber); +} + +void Eye::UnsubscribeAll() +{ + m_subscribers.clear(); } -void Eye::Save(InfoType const & info) +bool Eye::Save(InfoType const & info) { - if (::Save(*info)) - m_info.Set(info); + if (!::Save(*info)) + return false; + + m_info.Set(info); + return true; } void Eye::RegisterTipClick(Tip::Type type, Tip::Event event) @@ -126,15 +131,19 @@ void Eye::RegisterTipClick(Tip::Type type, Tip::Event event) tip.m_type = type; tip.m_eventCounters.Increment(event); tip.m_lastShownTime = now; - editableTips.emplace_back(tip); + editableTips.push_back(tip); } - Save(editableInfo); + if (!Save(editableInfo)) + return; - for (auto subscriber : m_subscribers) + GetPlatform().RunTask(Platform::Thread::Gui, [this, tip] { - subscriber->OnTipClicked(tip); - } + for (auto subscriber : m_subscribers) + { + subscriber->OnTipClicked(tip); + } + }); } void Eye::UpdateBookingFilterUsedTime() @@ -145,12 +154,16 @@ void Eye::UpdateBookingFilterUsedTime() editableInfo->m_booking.m_lastFilterUsedTime = now; - Save(editableInfo); + if (!Save(editableInfo)) + return; - for (auto subscriber : m_subscribers) + GetPlatform().RunTask(Platform::Thread::Gui, [this, now] { - subscriber->OnBookingFilterUsed(now); - } + for (auto subscriber : m_subscribers) + { + subscriber->OnBookingFilterUsed(now); + } + }); } void Eye::UpdateBoomarksCatalogShownTime() @@ -161,12 +174,16 @@ void Eye::UpdateBoomarksCatalogShownTime() editableInfo->m_bookmarks.m_lastOpenedTime = now; - Save(editableInfo); + if (!Save(editableInfo)) + return; - for (auto subscriber : m_subscribers) + GetPlatform().RunTask(Platform::Thread::Gui, [this, now] { - subscriber->OnBookmarksCatalogShown(now); - } + for (auto subscriber : m_subscribers) + { + subscriber->OnBookmarksCatalogShown(now); + } + }); } void Eye::UpdateDiscoveryShownTime() @@ -177,12 +194,16 @@ void Eye::UpdateDiscoveryShownTime() editableInfo->m_discovery.m_lastOpenedTime = now; - Save(editableInfo); + if (!Save(editableInfo)) + return; - for (auto subscriber : m_subscribers) + GetPlatform().RunTask(Platform::Thread::Gui, [this, now] { - subscriber->OnDiscoveryShown(now); - } + for (auto subscriber : m_subscribers) + { + subscriber->OnDiscoveryShown(now); + } + }); } void Eye::IncrementDiscoveryItem(Discovery::Event event) @@ -193,12 +214,16 @@ void Eye::IncrementDiscoveryItem(Discovery::Event event) editableInfo->m_discovery.m_lastClickedTime = Clock::now(); editableInfo->m_discovery.m_eventCounters.Increment(event); - Save(editableInfo); + if (!Save(editableInfo)) + return; - for (auto subscriber : m_subscribers) + GetPlatform().RunTask(Platform::Thread::Gui, [this, event] { - subscriber->OnDiscoveryItemClicked(event); - } + for (auto subscriber : m_subscribers) + { + subscriber->OnDiscoveryItemClicked(event); + } + }); } void Eye::RegisterLayerShown(Layer::Type type) @@ -228,12 +253,16 @@ void Eye::RegisterLayerShown(Layer::Type type) editableLayers.emplace_back(layer); } - Save(editableInfo); + if (!Save(editableInfo)) + return; - for (auto subscriber : m_subscribers) + GetPlatform().RunTask(Platform::Thread::Gui, [this, layer] { - subscriber->OnLayerUsed(layer); - } + for (auto subscriber : m_subscribers) + { + subscriber->OnLayerShown(layer); + } + }); } void Eye::RegisterPlacePageOpened() diff --git a/metrics/eye.hpp b/metrics/eye.hpp index 97c9b88d65..3ca68ef44b 100644 --- a/metrics/eye.hpp +++ b/metrics/eye.hpp @@ -12,16 +12,16 @@ namespace eye class Subscriber { public: - virtual ~Subscriber(){}; + virtual ~Subscriber() = default; public: - virtual void OnTipClicked(Tip const & tip){}; - virtual void OnBookingFilterUsed(Time const & time){}; - virtual void OnBookmarksCatalogShown(Time const & time){}; - virtual void OnDiscoveryShown(Time const & time){}; - virtual void OnDiscoveryItemClicked(Discovery::Event event){}; - virtual void OnLayerUsed(Layer const & layer){}; - virtual void OnPlacePageOpened(MapObject const & poi){}; + virtual void OnTipClicked(Tip const & tip) {} + virtual void OnBookingFilterUsed(Time const & time) {} + virtual void OnBookmarksCatalogShown(Time const & time) {} + virtual void OnDiscoveryShown(Time const & time) {} + virtual void OnDiscoveryItemClicked(Discovery::Event event) {} + virtual void OnLayerShown(Layer const & layer) {} + virtual void OnPlacePageOpened(MapObject const & poi) {} }; // Note This class IS thread-safe. @@ -53,12 +53,15 @@ public: static Eye & Instance(); InfoType GetInfo() const; + + // Subscribe/Unsubscribe must be called from main thread only. void Subscribe(Subscriber * subscriber); + void UnsubscribeAll(); private: Eye(); - void Save(InfoType const & info); + bool Save(InfoType const & info); // Event processing: void RegisterTipClick(Tip::Type type, Tip::Event event); diff --git a/metrics/eye_info.hpp b/metrics/eye_info.hpp index 2abe03537d..fbbbc069ac 100644 --- a/metrics/eye_info.hpp +++ b/metrics/eye_info.hpp @@ -164,7 +164,7 @@ struct MapObject { struct Event { - enum Type + enum class Type : uint8_t { Open, AddToBookmark, @@ -248,4 +248,16 @@ inline std::string DebugPrint(Layer::Type const & type) case Layer::Type::PublicTransport: return "PublicTransport"; } } + +inline std::string DebugPrint(MapObject::Event::Type const & type) +{ + switch (type) + { + case MapObject::Event::Type::Open: return "Open"; + case MapObject::Event::Type::AddToBookmark: return "AddToBookmark"; + case MapObject::Event::Type::UgcEditorOpened: return "UgcEditorOpened"; + case MapObject::Event::Type::UgcSaved: return "UgcSaved"; + case MapObject::Event::Type::RouteToCreated: return "RouteToCreated"; + } +} } // namespace eye diff --git a/metrics/eye_storage.cpp b/metrics/eye_storage.cpp index 499b608dde..e46b44c74b 100644 --- a/metrics/eye_storage.cpp +++ b/metrics/eye_storage.cpp @@ -22,8 +22,9 @@ bool Save(std::string const & filename, std::vector<int8_t> const & src) FileWriter writer(fileName); writer.Write(src.data(), src.size()); } - catch (FileWriter::Exception const &) + catch (FileWriter::Exception const & ex) { + LOG(LERROR, (ex.what(), ex.Msg())); return false; } @@ -42,7 +43,7 @@ bool Load(std::string const & filename, std::vector<int8_t> & dst) reader.Read(0, dst.data(), dst.size()); } - catch (FileReader::Exception const & ex) + catch (FileReader::Exception const &) { dst.clear(); return false; diff --git a/metrics/metrics_tests_support/eye_for_testing.hpp b/metrics/metrics_tests_support/eye_for_testing.hpp index 87795d9692..cf171eb523 100644 --- a/metrics/metrics_tests_support/eye_for_testing.hpp +++ b/metrics/metrics_tests_support/eye_for_testing.hpp @@ -2,6 +2,8 @@ #include "metrics/eye_info.hpp" +#include "platform/platform.hpp" + namespace eye { class EyeForTesting @@ -22,5 +24,8 @@ class ScopedEyeForTesting public: ScopedEyeForTesting() { EyeForTesting::ResetEye(); } ~ScopedEyeForTesting() { EyeForTesting::ResetEye(); } + +private: + Platform::ThreadRunner m_runner; }; } // namespace eye |