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:
-rw-r--r--drape_frontend/color_constants.cpp6
-rw-r--r--drape_head/drape_head.pro2
-rw-r--r--feature_list/feature_list.pro2
-rw-r--r--generator/feature_segments_checker/feature_segments_checker.pro2
-rw-r--r--generator/generator_tests/generator_tests.pro2
-rw-r--r--map/framework.cpp14
-rw-r--r--map/framework.hpp2
-rw-r--r--map/map_tests/map_tests.pro2
-rw-r--r--map/mwm_tests/mwm_tests.pro2
-rw-r--r--map/style_tests/style_tests.pro2
-rw-r--r--map/traffic_manager.cpp122
-rw-r--r--map/traffic_manager.hpp30
-rw-r--r--mapshot/mapshot.pro2
-rw-r--r--qt/qt.pro2
-rw-r--r--routing/routing_benchmarks/routing_benchmarks.pro2
-rw-r--r--routing/routing_consistency_tests/routing_consistency_tests.pro2
-rw-r--r--routing/routing_integration_tests/routing_integration_tests.pro2
-rw-r--r--routing/routing_tests/routing_tests.pro2
-rw-r--r--search/search_quality/features_collector_tool/features_collector_tool.pro2
-rw-r--r--search/search_quality/search_quality_tests/search_quality_tests.pro2
-rw-r--r--search/search_quality/search_quality_tool/search_quality_tool.pro2
-rw-r--r--storage/storage_integration_tests/storage_integration_tests.pro2
-rw-r--r--storage/storage_tests/storage_tests.pro2
-rw-r--r--traffic/traffic_info.cpp5
-rw-r--r--traffic/traffic_info.hpp8
-rw-r--r--traffic/traffic_tests/traffic_info_test.cpp4
26 files changed, 171 insertions, 56 deletions
diff --git a/drape_frontend/color_constants.cpp b/drape_frontend/color_constants.cpp
index 23a50d0e95..a3053de113 100644
--- a/drape_frontend/color_constants.cpp
+++ b/drape_frontend/color_constants.cpp
@@ -27,9 +27,9 @@ unordered_map<int, unordered_map<int, dp::Color>> kColorConstants =
{ TrafficG0, dp::Color(60, 170, 60, 255) },
{ TrafficG1, dp::Color(60, 170, 60, 255) },
{ TrafficG2, dp::Color(227, 38, 54, 255) },
- { TrafficG3, dp::Color(100, 100, 100, 255) },
- { TrafficG4, dp::Color(100, 100, 100, 255) },
- { TrafficG5, dp::Color(100, 100, 100, 255) },
+ { TrafficG3, dp::Color(0, 100, 100, 255) },
+ { TrafficG4, dp::Color(100, 0, 100, 255) },
+ { TrafficG5, dp::Color(100, 100, 0, 255) },
{ TrafficTempBlock, dp::Color(0, 0, 0, 255) },
{ TrafficUnknown, dp::Color(0, 0, 0, 0) },
}
diff --git a/drape_head/drape_head.pro b/drape_head/drape_head.pro
index 925b12b1ef..0b1199eff7 100644
--- a/drape_head/drape_head.pro
+++ b/drape_head/drape_head.pro
@@ -1,6 +1,6 @@
# Head project for drape develop and debuging
ROOT_DIR = ..
-DEPENDENCIES = map drape_frontend drape indexer storage platform geometry coding base \
+DEPENDENCIES = map traffic drape_frontend drape indexer storage platform geometry coding base \
freetype expat protobuf jansson fribidi tomcrypt
include($$ROOT_DIR/common.pri)
diff --git a/feature_list/feature_list.pro b/feature_list/feature_list.pro
index b4a016bfd5..be197b685a 100644
--- a/feature_list/feature_list.pro
+++ b/feature_list/feature_list.pro
@@ -1,7 +1,7 @@
# Feature List Tool
ROOT_DIR = ..
-DEPENDENCIES = map search_tests_support search search_quality storage indexer platform editor geometry \
+DEPENDENCIES = map traffic search_tests_support search search_quality storage indexer platform editor geometry \
coding base tomcrypt jansson protobuf stats_client succinct opening_hours pugixml
include($$ROOT_DIR/common.pri)
diff --git a/generator/feature_segments_checker/feature_segments_checker.pro b/generator/feature_segments_checker/feature_segments_checker.pro
index be269b569b..345ec93255 100644
--- a/generator/feature_segments_checker/feature_segments_checker.pro
+++ b/generator/feature_segments_checker/feature_segments_checker.pro
@@ -7,7 +7,7 @@ CONFIG -= app_bundle
TEMPLATE = app
ROOT_DIR = ../..
-DEPENDENCIES = generator map routing storage indexer platform geometry coding base minizip succinct protobuf gflags
+DEPENDENCIES = generator map traffic routing storage indexer platform geometry coding base minizip succinct protobuf gflags
include($$ROOT_DIR/common.pri)
diff --git a/generator/generator_tests/generator_tests.pro b/generator/generator_tests/generator_tests.pro
index b5b74540ff..830c9ae746 100644
--- a/generator/generator_tests/generator_tests.pro
+++ b/generator/generator_tests/generator_tests.pro
@@ -5,7 +5,7 @@ TEMPLATE = app
ROOT_DIR = ../..
DEPENDENCIES = generator_tests_support platform_tests_support generator drape_frontend routing search storage \
- indexer drape map platform editor geometry \
+ indexer drape map traffic platform editor geometry \
coding base freetype expat fribidi tomcrypt jansson protobuf osrm stats_client \
minizip succinct pugixml tess2 gflags oauthcpp
diff --git a/map/framework.cpp b/map/framework.cpp
index 77bb757c4d..8ed23c4c98 100644
--- a/map/framework.cpp
+++ b/map/framework.cpp
@@ -341,7 +341,7 @@ Framework::Framework()
, m_isRenderingEnabled(true)
, m_trackingReporter(platform::CreateSocket(), TRACKING_REALTIME_HOST, TRACKING_REALTIME_PORT,
tracking::Reporter::kPushDelayMs)
- , m_trafficManager(m_model.GetIndex())
+ , m_trafficManager(m_model.GetIndex(), bind(&Framework::GetMwmsByRect, this, _1))
, m_displacementModeManager([this](bool show) {
int const mode = show ? dp::displacement::kHotelMode : dp::displacement::kDefaultMode;
CallDrapeFunction(bind(&df::DrapeEngine::SetDisplacementMode, _1, mode));
@@ -3209,3 +3209,15 @@ void Framework::VizualizeRoadsInRect(m2::RectD const & rect)
}
}, kScale);
}
+
+vector<MwmSet::MwmId> Framework::GetMwmsByRect(m2::RectD const & rect)
+{
+ vector<MwmSet::MwmId> result;
+ if (!m_infoGetter)
+ return result;
+
+ auto countryId = m_infoGetter->GetRegionCountryId(rect.Center());
+ result.push_back(m_model.GetIndex().GetMwmIdByCountryFile(platform::CountryFile(countryId)));
+
+ return result;
+}
diff --git a/map/framework.hpp b/map/framework.hpp
index bc4027944e..338eacc328 100644
--- a/map/framework.hpp
+++ b/map/framework.hpp
@@ -360,6 +360,8 @@ public:
/// Guarantees that listener is called in the main thread context.
void SetCurrentCountryChangedListener(TCurrentCountryChanged const & listener);
+ vector<MwmSet::MwmId> GetMwmsByRect(m2::RectD const & rect);
+
private:
struct TapEvent
{
diff --git a/map/map_tests/map_tests.pro b/map/map_tests/map_tests.pro
index d476a428ae..7e0d69b16e 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 tracking drape indexer partners_api platform editor geometry coding base \
+DEPENDENCIES = map traffic traffic 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
diff --git a/map/mwm_tests/mwm_tests.pro b/map/mwm_tests/mwm_tests.pro
index 0beee1bc3c..3362d2801d 100644
--- a/map/mwm_tests/mwm_tests.pro
+++ b/map/mwm_tests/mwm_tests.pro
@@ -6,7 +6,7 @@ CONFIG -= app_bundle
TEMPLATE = app
ROOT_DIR = ../..
-DEPENDENCIES = map search storage indexer platform editor geometry coding base \
+DEPENDENCIES = map traffic search storage indexer platform editor geometry coding base \
freetype fribidi expat protobuf tomcrypt jansson succinct pugixml stats_client
include($$ROOT_DIR/common.pri)
diff --git a/map/style_tests/style_tests.pro b/map/style_tests/style_tests.pro
index c4b1a0fb91..9df30f79cf 100644
--- a/map/style_tests/style_tests.pro
+++ b/map/style_tests/style_tests.pro
@@ -6,7 +6,7 @@ TEMPLATE = app
INCLUDEPATH += ../../3party/protobuf/src
ROOT_DIR = ../..
-DEPENDENCIES = map indexer platform geometry coding base expat protobuf tomcrypt
+DEPENDENCIES = map traffic indexer platform geometry coding base expat protobuf tomcrypt
macx-*: LIBS *= "-framework IOKit"
diff --git a/map/traffic_manager.cpp b/map/traffic_manager.cpp
index 6f6c91af2d..17007cabf1 100644
--- a/map/traffic_manager.cpp
+++ b/map/traffic_manager.cpp
@@ -6,6 +6,32 @@
#include "indexer/scales.hpp"
+TrafficManager::TrafficManager(Index const & index,
+ GetMwmsByRectFn const & getMwmsByRectFn)
+ : m_isEnabled(true) //TODO: true is temporary
+ , m_index(index)
+ , m_getMwmsByRectFn(getMwmsByRectFn)
+ , m_isRunning(true)
+ , m_thread(&TrafficManager::ThreadRoutine, this)
+{
+ CHECK(m_getMwmsByRectFn != nullptr, ());
+}
+
+TrafficManager::~TrafficManager()
+{
+ {
+ lock_guard<mutex> lock(m_requestedMwmsLock);
+ m_isRunning = false;
+ }
+ m_condition.notify_one();
+ m_thread.join();
+}
+
+void TrafficManager::SetEnabled(bool enabled)
+{
+ m_isEnabled = enabled;
+}
+
void TrafficManager::SetDrapeEngine(ref_ptr<df::DrapeEngine> engine)
{
m_drapeEngine = engine;
@@ -13,34 +39,27 @@ void TrafficManager::SetDrapeEngine(ref_ptr<df::DrapeEngine> engine)
void TrafficManager::UpdateViewport(ScreenBase const & screen)
{
- // 1. Determine mwm's inside viewport.
+ if (!m_isEnabled)
+ return;
- // 2. Request traffic for this mwm's.
+ // Request traffic.
+ auto mwms = m_getMwmsByRectFn(screen.ClipRect());
- // 3. Cache geometry for rendering if it's necessary.
- //MwmSet::MwmId mwmId;
- //if (m_mwmIds.find(mwmId) == m_mwmIds.end())
- //{
- // df::TrafficSegmentsGeometry geometry;
- // traffic::TrafficInfo info;
- // CalculateSegmentsGeometry(info, geometry);
- // m_mwmIds.insert(mwmId);
- // m_drapeEngine->CacheTrafficSegmentsGeometry(geometry);
- //}
-
- // 4. Update traffic colors.
- //df::TrafficSegmentsColoring coloring;
- //traffic::TrafficInfo info;
- //CalculateSegmentsColoring(info, coloring);
- //m_drapeEngine->UpdateTraffic(coloring);
-
- // 5. Remove some mwm's from cache.
+ // TODO: request new mwms, update old ones by timer.
+
+ for (auto const & mwm : mwms)
+ RequestTrafficData(mwm);
+
+ // TODO: Remove some mwm's from cache.
//MwmSet::MwmId mwmId;
//m_drapeEngine->ClearTrafficCache(mwmId);
}
void TrafficManager::UpdateMyPosition(MyPosition const & myPosition)
{
+ if (!m_isEnabled)
+ return;
+
// 1. Determine mwm's nearby "my position".
// 2. Request traffic for this mwm's.
@@ -71,16 +90,20 @@ void TrafficManager::CalculateSegmentsGeometry(traffic::TrafficInfo const & traf
{
m2::PolylineD polyline;
ft.ForEachPoint([&polyline](m2::PointD const & pt) { polyline.Add(pt); }, kScale);
- polylines[fid] = polyline;
+ if (polyline.GetSize() != 0)
+ polylines[fid] = polyline;
}
};
m_index.ReadFeatures(featureReader, features);
for (auto const & c : trafficInfo.GetColoring())
{
- output.push_back(make_pair(df::TrafficSegmentID(trafficInfo.GetMwmId(), c.first),
- polylines[c.first.m_fid].ExtractSegment(c.first.m_idx,
- c.first.m_dir == 1)));
+ auto it = polylines.find(c.first.m_fid);
+ if (it == polylines.end())
+ continue;
+ bool const isReversed = (c.first.m_dir == traffic::TrafficInfo::RoadSegmentId::kReverseDirection);
+ output.emplace_back(df::TrafficSegmentID(trafficInfo.GetMwmId(), c.first),
+ it->second.ExtractSegment(c.first.m_idx, isReversed));
}
}
@@ -93,3 +116,54 @@ void TrafficManager::CalculateSegmentsColoring(traffic::TrafficInfo const & traf
output.emplace_back(sid, c.second);
}
}
+
+void TrafficManager::ThreadRoutine()
+{
+ vector<MwmSet::MwmId> mwms;
+ while (WaitForRequest(mwms))
+ {
+ for (auto const & mwm : mwms)
+ {
+ traffic::TrafficInfo info(mwm);
+ if (info.ReceiveTrafficData("Russia_Moscow.traff")) // TODO: temporary name
+ OnTrafficDataResponse(info);
+ else
+ LOG(LDEBUG, ("Traffic request failed. Mwm =", mwm));
+ }
+ mwms.clear();
+ }
+}
+
+bool TrafficManager::WaitForRequest(vector<MwmSet::MwmId> & mwms)
+{
+ unique_lock<mutex> lock(m_requestedMwmsLock);
+ m_condition.wait(lock, [this] { return !m_isRunning || !m_requestedMwms.empty(); });
+ if (!m_isRunning)
+ return false;
+ mwms.swap(m_requestedMwms);
+ return true;
+}
+
+void TrafficManager::RequestTrafficData(MwmSet::MwmId const & mwmId)
+{
+ lock_guard<mutex> lock(m_requestedMwmsLock);
+ m_requestedMwms.push_back(mwmId);
+ m_condition.notify_one();
+}
+
+void TrafficManager::OnTrafficDataResponse(traffic::TrafficInfo const & info)
+{
+ // Cache geometry for rendering if it's necessary.
+ if (m_mwmIds.find(info.GetMwmId()) == m_mwmIds.end())
+ {
+ df::TrafficSegmentsGeometry geometry;
+ CalculateSegmentsGeometry(info, geometry);
+ m_mwmIds.insert(info.GetMwmId());
+ m_drapeEngine->CacheTrafficSegmentsGeometry(geometry);
+ }
+
+ // Update traffic colors.
+ df::TrafficSegmentsColoring coloring;
+ CalculateSegmentsColoring(info, coloring);
+ m_drapeEngine->UpdateTraffic(coloring);
+}
diff --git a/map/traffic_manager.hpp b/map/traffic_manager.hpp
index 93982ba898..b2f60a5a45 100644
--- a/map/traffic_manager.hpp
+++ b/map/traffic_manager.hpp
@@ -12,14 +12,17 @@
#include "indexer/index.hpp"
+#include "std/mutex.hpp"
#include "std/set.hpp"
+#include "std/thread.hpp"
+#include "std/vector.hpp"
namespace df
{
class DrapeEngine;
} // namespace df
-class TrafficManager
+class TrafficManager final
{
public:
struct MyPosition
@@ -34,9 +37,12 @@ public:
{}
};
- TrafficManager(Index const & index)
- : m_index(index)
- {}
+ using GetMwmsByRectFn = function<vector<MwmSet::MwmId>(m2::RectD const &)>;
+
+ TrafficManager(Index const & index, GetMwmsByRectFn const & getMwmsByRectFn);
+ ~TrafficManager();
+
+ void SetEnabled(bool enabled);
void UpdateViewport(ScreenBase const & screen);
void UpdateMyPosition(MyPosition const & myPosition);
@@ -49,8 +55,24 @@ private:
void CalculateSegmentsColoring(traffic::TrafficInfo const & trafficInfo,
df::TrafficSegmentsColoring & output) const;
+ void ThreadRoutine();
+ bool WaitForRequest(vector<MwmSet::MwmId> & mwms);
+ void RequestTrafficData(MwmSet::MwmId const & mwmId);
+ void OnTrafficDataResponse(traffic::TrafficInfo const & info);
+
+ bool m_isEnabled;
+
Index const & m_index;
+ GetMwmsByRectFn m_getMwmsByRectFn;
+
ref_ptr<df::DrapeEngine> m_drapeEngine;
m2::PointD m_myPosition;
set<MwmSet::MwmId> m_mwmIds;
+
+ bool m_isRunning;
+ condition_variable m_condition;
+
+ vector<MwmSet::MwmId> m_requestedMwms;
+ mutex m_requestedMwmsLock;
+ thread m_thread;
};
diff --git a/mapshot/mapshot.pro b/mapshot/mapshot.pro
index 2a727a6a5a..2abb04d1be 100644
--- a/mapshot/mapshot.pro
+++ b/mapshot/mapshot.pro
@@ -1,7 +1,7 @@
# mapshot binary
ROOT_DIR = ..
-DEPENDENCIES = map drape_frontend routing search storage tracking indexer drape partners_api platform editor geometry coding base \
+DEPENDENCIES = map drape_frontend routing search storage tracking traffic indexer drape partners_api platform editor geometry coding base \
freetype expat fribidi tomcrypt gflags jansson protobuf osrm stats_client minizip succinct \
pugixml opening_hours
diff --git a/qt/qt.pro b/qt/qt.pro
index e9a6d23bf7..f4d42a22b5 100644
--- a/qt/qt.pro
+++ b/qt/qt.pro
@@ -1,6 +1,6 @@
# Main application in qt.
ROOT_DIR = ..
-DEPENDENCIES = map drape_frontend routing search storage tracking indexer drape partners_api platform editor geometry \
+DEPENDENCIES = map drape_frontend routing search storage tracking traffic indexer drape partners_api platform editor geometry \
coding base freetype expat fribidi tomcrypt jansson protobuf osrm stats_client \
minizip succinct pugixml oauthcpp
diff --git a/routing/routing_benchmarks/routing_benchmarks.pro b/routing/routing_benchmarks/routing_benchmarks.pro
index e1034ba9e0..3bb1337e5b 100644
--- a/routing/routing_benchmarks/routing_benchmarks.pro
+++ b/routing/routing_benchmarks/routing_benchmarks.pro
@@ -4,7 +4,7 @@ CONFIG -= app_bundle
TEMPLATE = app
ROOT_DIR = ../../
-DEPENDENCIES = map routing search storage indexer platform editor geometry coding base \
+DEPENDENCIES = map routing traffic search storage indexer platform editor geometry coding base \
osrm jansson protobuf tomcrypt stats_client succinct pugixml
macx-*: LIBS *= "-framework IOKit"
diff --git a/routing/routing_consistency_tests/routing_consistency_tests.pro b/routing/routing_consistency_tests/routing_consistency_tests.pro
index 03a2a2cd07..383380607e 100644
--- a/routing/routing_consistency_tests/routing_consistency_tests.pro
+++ b/routing/routing_consistency_tests/routing_consistency_tests.pro
@@ -7,7 +7,7 @@ CONFIG -= app_bundle
TEMPLATE = app
ROOT_DIR = ../..
-DEPENDENCIES = map routing search storage indexer platform editor geometry coding base osrm \
+DEPENDENCIES = map routing traffic search storage indexer platform editor geometry coding base osrm \
jansson protobuf tomcrypt succinct stats_client generator gflags pugixml
include($$ROOT_DIR/common.pri)
diff --git a/routing/routing_integration_tests/routing_integration_tests.pro b/routing/routing_integration_tests/routing_integration_tests.pro
index 43c0ffa377..40f603d132 100644
--- a/routing/routing_integration_tests/routing_integration_tests.pro
+++ b/routing/routing_integration_tests/routing_integration_tests.pro
@@ -11,7 +11,7 @@ CONFIG -= app_bundle
TEMPLATE = app
ROOT_DIR = ../..
-DEPENDENCIES = map routing search storage indexer platform editor geometry coding base \
+DEPENDENCIES = map routing traffic search storage indexer platform editor geometry coding base \
osrm jansson protobuf tomcrypt succinct stats_client pugixml
DEPENDENCIES += opening_hours
diff --git a/routing/routing_tests/routing_tests.pro b/routing/routing_tests/routing_tests.pro
index 257873522d..1ae0bd9712 100644
--- a/routing/routing_tests/routing_tests.pro
+++ b/routing/routing_tests/routing_tests.pro
@@ -7,7 +7,7 @@ TEMPLATE = app
ROOT_DIR = ../..
DEPENDENCIES = routing indexer platform_tests_support platform editor geometry coding base \
- osrm protobuf tomcrypt succinct jansson stats_client map pugixml stats_client
+ osrm protobuf tomcrypt succinct jansson stats_client map traffic pugixml stats_client
macx-*: LIBS *= "-framework IOKit" "-framework SystemConfiguration"
diff --git a/search/search_quality/features_collector_tool/features_collector_tool.pro b/search/search_quality/features_collector_tool/features_collector_tool.pro
index 857d1595f2..512c236683 100644
--- a/search/search_quality/features_collector_tool/features_collector_tool.pro
+++ b/search/search_quality/features_collector_tool/features_collector_tool.pro
@@ -7,7 +7,7 @@ TEMPLATE = app
ROOT_DIR = ../../..
# todo(@m) revise
-DEPENDENCIES = map drape_frontend routing search_tests_support search search_quality storage indexer drape \
+DEPENDENCIES = map drape_frontend traffic routing search_tests_support search search_quality storage indexer drape \
platform editor geometry coding base freetype expat fribidi tomcrypt gflags \
jansson protobuf osrm stats_client minizip succinct \
opening_hours pugixml
diff --git a/search/search_quality/search_quality_tests/search_quality_tests.pro b/search/search_quality/search_quality_tests/search_quality_tests.pro
index 6fe37de7e6..1bd627a772 100644
--- a/search/search_quality/search_quality_tests/search_quality_tests.pro
+++ b/search/search_quality/search_quality_tests/search_quality_tests.pro
@@ -7,7 +7,7 @@ TEMPLATE = app
ROOT_DIR = ../../..
# todo(@m) revise
-DEPENDENCIES = map drape_frontend routing search_tests_support search search_quality storage indexer drape platform geometry coding base \
+DEPENDENCIES = map drape_frontend traffic routing search_tests_support search search_quality storage indexer drape platform geometry coding base \
freetype expat fribidi tomcrypt gflags jansson protobuf osrm stats_client minizip succinct \
opening_hours
diff --git a/search/search_quality/search_quality_tool/search_quality_tool.pro b/search/search_quality/search_quality_tool/search_quality_tool.pro
index 24a4dc5480..bcd5d2cae0 100644
--- a/search/search_quality/search_quality_tool/search_quality_tool.pro
+++ b/search/search_quality/search_quality_tool/search_quality_tool.pro
@@ -7,7 +7,7 @@ TEMPLATE = app
ROOT_DIR = ../../..
# todo(@m) revise
-DEPENDENCIES = map drape_frontend routing search_tests_support search search_quality storage indexer drape \
+DEPENDENCIES = map drape_frontend traffic routing search_tests_support search search_quality storage indexer drape \
platform editor geometry coding base freetype expat fribidi tomcrypt gflags \
jansson protobuf osrm stats_client minizip succinct \
opening_hours pugixml
diff --git a/storage/storage_integration_tests/storage_integration_tests.pro b/storage/storage_integration_tests/storage_integration_tests.pro
index 5f922c9fc7..551c85c5c1 100644
--- a/storage/storage_integration_tests/storage_integration_tests.pro
+++ b/storage/storage_integration_tests/storage_integration_tests.pro
@@ -6,7 +6,7 @@ CONFIG -= app_bundle
TEMPLATE = app
ROOT_DIR = ../..
-DEPENDENCIES = map drape_frontend routing search storage tracking indexer drape partners_api platform_tests_support platform editor opening_hours geometry \
+DEPENDENCIES = map drape_frontend routing search storage tracking traffic indexer drape partners_api platform_tests_support platform editor opening_hours geometry \
coding base freetype expat fribidi tomcrypt jansson protobuf osrm stats_client \
minizip succinct pugixml oauthcpp
diff --git a/storage/storage_tests/storage_tests.pro b/storage/storage_tests/storage_tests.pro
index 6535fc5ccc..5fffd31010 100644
--- a/storage/storage_tests/storage_tests.pro
+++ b/storage/storage_tests/storage_tests.pro
@@ -11,7 +11,7 @@ macx*|win32*|linux* {
DEPENDENCIES = generator_tests_support generator
}
-DEPENDENCIES *= drape_frontend map routing \
+DEPENDENCIES *= drape_frontend map routing traffic \
search storage indexer drape platform_tests_support platform editor opening_hours geometry \
coding base freetype expat fribidi tomcrypt jansson tess2 protobuf osrm stats_client \
minizip succinct pugixml oauthcpp
diff --git a/traffic/traffic_info.cpp b/traffic/traffic_info.cpp
index ef233b6538..a77dd9297a 100644
--- a/traffic/traffic_info.cpp
+++ b/traffic/traffic_info.cpp
@@ -20,7 +20,6 @@ namespace traffic
{
namespace
{
-char const kTestFileName[] = "traffic_data";
bool ReadRemoteFile(string const & url, vector<uint8_t> & result)
{
@@ -46,12 +45,12 @@ TrafficInfo::RoadSegmentId::RoadSegmentId(uint32_t fid, uint16_t idx, uint8_t di
// TrafficInfo --------------------------------------------------------------------------------
TrafficInfo::TrafficInfo(MwmSet::MwmId const & mwmId) : m_mwmId(mwmId) {}
-bool TrafficInfo::ReceiveTrafficData()
+bool TrafficInfo::ReceiveTrafficData(string const & fileName)
{
if (strlen(TRAFFIC_DATA_BASE_URL) == 0)
return false;
- string const url = string(TRAFFIC_DATA_BASE_URL) + string(kTestFileName);
+ string const url = string(TRAFFIC_DATA_BASE_URL) + string(fileName);
vector<uint8_t> contents;
if (!ReadRemoteFile(url, contents))
return false;
diff --git a/traffic/traffic_info.hpp b/traffic/traffic_info.hpp
index 23309cd8ca..1db69d7493 100644
--- a/traffic/traffic_info.hpp
+++ b/traffic/traffic_info.hpp
@@ -12,11 +12,16 @@ namespace traffic
{
// This class is responsible for providing the real-time
// information about road traffic for one mwm file.
+
class TrafficInfo
{
public:
struct RoadSegmentId
{
+ // m_dir can be kForwardDirection or kReverseDirection.
+ static int constexpr kForwardDirection = 0;
+ static int constexpr kReverseDirection = 1;
+
RoadSegmentId();
RoadSegmentId(uint32_t fid, uint16_t idx, uint8_t dir);
@@ -43,7 +48,6 @@ public:
uint16_t m_idx : 15;
// The direction of the segment.
- // todo(@m) Write up what the values 0 and 1 mean specifically.
uint8_t m_dir : 1;
};
@@ -58,7 +62,7 @@ public:
// todo(@m, @syershov) Currently a hardcoded path is used.
// Construct the url by passing an MwmId.
// *NOTE* This method must not be called on the UI thread.
- bool ReceiveTrafficData();
+ bool ReceiveTrafficData(string const & fileName);
// Returns the latest known speed group by a feature segment's id.
SpeedGroup GetSpeedGroup(RoadSegmentId const & id) const;
diff --git a/traffic/traffic_tests/traffic_info_test.cpp b/traffic/traffic_tests/traffic_info_test.cpp
index 3efbcd7e35..3c9af855ea 100644
--- a/traffic/traffic_tests/traffic_info_test.cpp
+++ b/traffic/traffic_tests/traffic_info_test.cpp
@@ -21,8 +21,10 @@ SpeedGroup GetSpeedGroup(TrafficInfo::Coloring const & coloring,
UNIT_TEST(TrafficInfo_RemoteFile)
{
+ string const kTestFileName = "traffic_data";
+
TrafficInfo r;
- TEST(r.ReceiveTrafficData(), ());
+ TEST(r.ReceiveTrafficData(kTestFileName), ());
}
UNIT_TEST(TrafficInfo_Serialization)