Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArsentiy Milchakov <milcars@mapswithme.com>2018-10-26 14:41:27 +0300
committerTatiana Yan <tatiana.kondakova@gmail.com>2018-10-26 17:10:18 +0300
commit3d481801c1de0830d56def278385fa3bd6434bdb (patch)
tree92caa8721d9cdc121b7623a96c4b7297f573cf79 /metrics
parent424354cf3d2c92e3d8e77692c2cd929188894535 (diff)
[eye] review fixes
Diffstat (limited to 'metrics')
-rw-r--r--metrics/eye.cpp93
-rw-r--r--metrics/eye.hpp21
-rw-r--r--metrics/eye_info.hpp14
-rw-r--r--metrics/eye_storage.cpp5
-rw-r--r--metrics/metrics_tests_support/eye_for_testing.hpp5
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