diff options
author | Sergey Yershov <syershov@maps.me> | 2016-10-19 16:21:03 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-19 16:21:03 +0300 |
commit | d27ed175d5e7e5f41c00111a5d7bb90f2c9d85e6 (patch) | |
tree | c9afe6f2c472a7f2a53e7035df2668b8b390b095 /map | |
parent | 0183d37e1eb6505b4e930554be773bcd56e326ae (diff) | |
parent | 5666583532d208c05d6194d1cb28a5b61ad9d75c (diff) |
Merge pull request #4498 from dobriy-eeh/gps-stats
gps tracking reporter
Diffstat (limited to 'map')
-rw-r--r-- | map/framework.cpp | 28 | ||||
-rw-r--r-- | map/framework.hpp | 4 | ||||
-rw-r--r-- | map/map_tests/map_tests.pro | 2 |
3 files changed, 33 insertions, 1 deletions
diff --git a/map/framework.cpp b/map/framework.cpp index c406e71808..110352c18a 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -60,6 +60,7 @@ #include "platform/platform.hpp" #include "platform/preferred_languages.hpp" #include "platform/settings.hpp" +#include "platform/socket.hpp" #include "coding/internal/file_data.hpp" #include "coding/zip_reader.hpp" @@ -155,6 +156,17 @@ void CancelQuery(weak_ptr<search::ProcessorHandle> & handle) queryHandle->Cancel(); handle.reset(); } + +class StubSocket final : public platform::Socket +{ +public: + // Socket overrides + bool Open(string const & host, uint16_t port) override { return false; } + void Close() override {} + bool Read(uint8_t * data, uint32_t count) override { return false; } + bool Write(uint8_t const * data, uint32_t count) override { return false; } + void SetTimeout(uint32_t milliseconds) override {} +}; } // namespace pair<MwmSet::MwmId, MwmSet::RegResult> Framework::RegisterMap( @@ -200,6 +212,8 @@ void Framework::OnLocationUpdate(GpsInfo const & info) CallDrapeFunction(bind(&df::DrapeEngine::SetGpsInfo, _1, rInfo, m_routingSession.IsNavigable(), routeMatchingInfo)); + if (IsTrackingReporterEnabled()) + m_trackingReporter.AddLocation(info); } void Framework::OnCompassUpdate(CompassInfo const & info) @@ -224,6 +238,19 @@ void Framework::SetMyPositionModeListener(TMyPositionModeChanged && fn) m_myPositionListener = move(fn); } +bool Framework::IsTrackingReporterEnabled() const +{ + if (m_currentRouterType != routing::RouterType::Vehicle) + return false; + + if (!m_routingSession.IsOnRoute()) + return false; + + bool allowStat = false; + UNUSED_VALUE(settings::Get(tracking::Reporter::kEnabledSettingsKey, allowStat)); + return allowStat; +} + void Framework::OnUserPositionChanged(m2::PointD const & position) { MyPositionMarkPoint * myPosition = UserMarkContainer::UserMarkForMyPostion(); @@ -314,6 +341,7 @@ Framework::Framework() , m_storage(platform::migrate::NeedMigrate() ? COUNTRIES_OBSOLETE_FILE : COUNTRIES_FILE) , m_bmManager(*this) , m_isRenderingEnabled(true) + , m_trackingReporter(make_unique<StubSocket>(), tracking::Reporter::kPushDelayMs) , m_displacementModeManager([this](bool show) { int const mode = show ? dp::displacement::kHotelMode : dp::displacement::kDefaultMode; CallDrapeFunction(bind(&df::DrapeEngine::SetDisplacementMode, _1, mode)); diff --git a/map/framework.hpp b/map/framework.hpp index 49fdaa2b4a..712aaa4b58 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -33,6 +33,8 @@ #include "storage/downloading_policy.hpp" #include "storage/storage.hpp" +#include "tracking/reporter.hpp" + #include "partners_api/booking_api.hpp" #include "partners_api/uber_api.hpp" @@ -161,6 +163,7 @@ protected: uber::Api m_uberApi; bool m_isRenderingEnabled; + tracking::Reporter m_trackingReporter; /// This function will be called by m_storage when latest local files /// is downloaded. @@ -398,6 +401,7 @@ public: void SetMyPositionModeListener(location::TMyPositionModeChanged && fn); private: + bool IsTrackingReporterEnabled() const; void OnUserPositionChanged(m2::PointD const & position); //@} diff --git a/map/map_tests/map_tests.pro b/map/map_tests/map_tests.pro index e44ce96790..d476a428ae 100644 --- a/map/map_tests/map_tests.pro +++ b/map/map_tests/map_tests.pro @@ -6,7 +6,7 @@ CONFIG -= app_bundle TEMPLATE = app ROOT_DIR = ../.. -DEPENDENCIES = map drape_frontend routing search storage drape indexer partners_api platform editor geometry coding base \ +DEPENDENCIES = map drape_frontend routing search storage tracking drape indexer partners_api platform editor geometry coding base \ freetype fribidi expat protobuf tomcrypt jansson osrm stats_client minizip succinct pugixml stats_client DEPENDENCIES *= opening_hours |