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:
authorDaria Volvenkova <d.volvenkova@corp.mail.ru>2016-12-01 17:47:42 +0300
committerDaria Volvenkova <d.volvenkova@corp.mail.ru>2016-12-02 14:06:53 +0300
commit694410c11b1038856340e79a6b81ef3963497f22 (patch)
treef89d09157b0248357458310a1909b94bba3b8b00 /traffic
parentfb61ac89e62a7e78cf112d1a021c62d369500790 (diff)
Review fixes.
Diffstat (limited to 'traffic')
-rw-r--r--traffic/traffic_info.cpp46
-rw-r--r--traffic/traffic_info.hpp8
2 files changed, 29 insertions, 25 deletions
diff --git a/traffic/traffic_info.cpp b/traffic/traffic_info.cpp
index a7e56bceab..e02c00e900 100644
--- a/traffic/traffic_info.cpp
+++ b/traffic/traffic_info.cpp
@@ -4,12 +4,14 @@
#include "coding/bit_streams.hpp"
#include "coding/reader.hpp"
+#include "coding/url_encode.hpp"
#include "coding/varint.hpp"
#include "coding/write_to_sink.hpp"
#include "coding/writer.hpp"
#include "base/assert.hpp"
#include "base/logging.hpp"
+#include "base/string_utils.hpp"
#include "std/algorithm.hpp"
#include "std/string.hpp"
@@ -22,18 +24,21 @@ namespace traffic
{
namespace
{
-bool ReadRemoteFile(string const & url, string & result, int & errorCode)
+bool ReadRemoteFile(string const & url, vector<uint8_t> & contents, int & errorCode)
{
platform::HttpClient request(url);
if (!request.RunHttpRequest())
{
- LOG(LINFO, ("Couldn't run traffic request", url));
- errorCode = -1;
+ errorCode = request.ErrorCode();
+ LOG(LINFO, ("Couldn't run traffic request", url, ". Error:", errorCode));
return false;
}
errorCode = request.ErrorCode();
- result = request.ServerResponse();
+
+ string const & result = request.ServerResponse();
+ contents.resize(result.size());
+ memcpy(contents.data(), result.data(), result.size());
if (errorCode != 200)
{
@@ -53,7 +58,7 @@ string MakeRemoteURL(string const & name, uint64_t version)
ss << TRAFFIC_DATA_BASE_URL;
if (version != 0)
ss << version << "/";
- ss << name << TRAFFIC_FILE_EXTENSION;
+ ss << UrlEncode(name) << TRAFFIC_FILE_EXTENSION;
return ss.str();
}
} // namespace
@@ -67,7 +72,7 @@ TrafficInfo::RoadSegmentId::RoadSegmentId(uint32_t fid, uint16_t idx, uint8_t di
}
// TrafficInfo --------------------------------------------------------------------------------
-TrafficInfo::TrafficInfo(MwmSet::MwmId const & mwmId, int64_t const & currentDataVersion)
+TrafficInfo::TrafficInfo(MwmSet::MwmId const & mwmId, int64_t currentDataVersion)
: m_mwmId(mwmId)
, m_currentDataVersion(currentDataVersion)
{}
@@ -83,33 +88,31 @@ bool TrafficInfo::ReceiveTrafficData()
if (url.empty())
return false;
- string result;
+ vector<uint8_t> contents;
int errorCode;
- if (!ReadRemoteFile(url, result, errorCode))
+ if (!ReadRemoteFile(url, contents, errorCode))
{
if (errorCode == 404)
{
- int64_t version = atoi(result.c_str());
+ string const result(reinterpret_cast<char*>(contents.data()), contents.size());
+
+ int64_t version = 0;
+ strings::to_int64(result.c_str(), version);
if (version > info->GetVersion() && version <= m_currentDataVersion)
- m_availabilityStatus = Availability::ExpiredMwm;
+ m_availability = Availability::ExpiredData;
else if (version > m_currentDataVersion)
- m_availabilityStatus = Availability::ExpiredApp;
+ m_availability = Availability::ExpiredApp;
else
- m_availabilityStatus = Availability::NoData;
+ m_availability = Availability::NoData;
}
else
{
- m_availabilityStatus = Availability::Unknown;
+ m_availability = Availability::Unknown;
}
return false;
}
- vector<uint8_t> contents;
- contents.resize(result.size());
- for (size_t i = 0; i < result.size(); ++i)
- contents[i] = static_cast<uint8_t>(result[i]);
-
Coloring coloring;
try
{
@@ -117,12 +120,13 @@ bool TrafficInfo::ReceiveTrafficData()
}
catch (Reader::Exception const & e)
{
- LOG(LINFO, ("Could not read traffic data received from server. MWM:", info->GetCountryName(),
- "Version:", info->GetVersion()));
+ m_availability = Availability::NoData;
+ LOG(LWARNING, ("Could not read traffic data received from server. MWM:", info->GetCountryName(),
+ "Version:", info->GetVersion()));
return false;
}
m_coloring.swap(coloring);
- m_availabilityStatus = Availability::IsAvailable;
+ m_availability = Availability::IsAvailable;
return true;
}
diff --git a/traffic/traffic_info.hpp b/traffic/traffic_info.hpp
index 92de4f6b2a..a07e4d8cc4 100644
--- a/traffic/traffic_info.hpp
+++ b/traffic/traffic_info.hpp
@@ -20,7 +20,7 @@ public:
{
IsAvailable,
NoData,
- ExpiredMwm,
+ ExpiredData,
ExpiredApp,
Unknown
};
@@ -65,7 +65,7 @@ public:
TrafficInfo() = default;
- TrafficInfo(MwmSet::MwmId const & mwmId, int64_t const & currentDataVersion);
+ TrafficInfo(MwmSet::MwmId const & mwmId, int64_t currentDataVersion);
// Fetches the latest traffic data from the server and updates the coloring.
// Construct the url by passing an MwmId.
@@ -77,7 +77,7 @@ public:
MwmSet::MwmId const & GetMwmId() const { return m_mwmId; }
Coloring const & GetColoring() const { return m_coloring; }
- Availability GetAvailability() const { return m_availabilityStatus; }
+ Availability GetAvailability() const { return m_availability; }
static void SerializeTrafficData(Coloring const & coloring, vector<uint8_t> & result);
@@ -87,7 +87,7 @@ private:
// The mapping from feature segments to speed groups (see speed_groups.hpp).
Coloring m_coloring;
MwmSet::MwmId m_mwmId;
- Availability m_availabilityStatus = Availability::Unknown;
+ Availability m_availability = Availability::Unknown;
int64_t m_currentDataVersion = 0;
};
} // namespace traffic