diff options
author | Anatoly Serdtcev <serdtcev@maps.me> | 2019-01-15 12:33:09 +0300 |
---|---|---|
committer | Anatoly Serdtcev <serdtcev@maps.me> | 2019-01-31 14:15:44 +0300 |
commit | b4cb0204dede2abeea2cd0f2ae11167d0342650b (patch) | |
tree | 264cfd7e974a475a2a7fc3ef89e45b0c2487a2ee /geocoder | |
parent | 5dad0dcba80af88d08984c217d18f96593d80b13 (diff) |
[geocoder] Fix for review
Diffstat (limited to 'geocoder')
-rw-r--r-- | geocoder/hierarchy_reader.cpp | 23 | ||||
-rw-r--r-- | geocoder/hierarchy_reader.hpp | 6 |
2 files changed, 17 insertions, 12 deletions
diff --git a/geocoder/hierarchy_reader.cpp b/geocoder/hierarchy_reader.cpp index bac7f4f962..3906d212f2 100644 --- a/geocoder/hierarchy_reader.cpp +++ b/geocoder/hierarchy_reader.cpp @@ -6,8 +6,8 @@ using namespace std; -namespace geocoder { - +namespace geocoder +{ namespace { // Information will be logged for every |kLogBatch| entries. @@ -18,7 +18,7 @@ HierarchyReader::HierarchyReader(string const & pathToJsonHierarchy) : m_fileStm{pathToJsonHierarchy} { if (!m_fileStm) - throw runtime_error("failed to open file " + pathToJsonHierarchy); + MYTHROW(OpenException, ("Failed to open file", pathToJsonHierarchy)); } auto HierarchyReader::ReadEntries(size_t readerCount, ParsingStats & stats) @@ -26,9 +26,9 @@ auto HierarchyReader::ReadEntries(size_t readerCount, ParsingStats & stats) { LOG(LINFO, ("Reading entries...")); - auto taskEntries = vector<multimap<base::GeoObjectId, Entry>>(readerCount); - auto tasks = vector<thread>{}; - for (auto t = size_t{0}; t < readerCount; ++t) + vector<multimap<base::GeoObjectId, Entry>> taskEntries(readerCount); + vector<thread> tasks{}; + for (size_t t = 0; t < readerCount; ++t) tasks.emplace_back(&HierarchyReader::ReadEntryMap, this, ref(taskEntries[t]), ref(stats)); for (auto & reader : tasks) @@ -44,7 +44,7 @@ auto HierarchyReader::UnionEntries(vector<multimap<base::GeoObjectId, Entry>> & { auto entries = vector<Entry>{}; - auto size = size_t{0}; + size_t size{0}; for (auto const & map : entryParts) size += map.size(); @@ -56,9 +56,12 @@ auto HierarchyReader::UnionEntries(vector<multimap<base::GeoObjectId, Entry>> & { auto minPart = min_element(entryParts.begin(), entryParts.end()); - entries.emplace_back(std::move(minPart->begin()->second)); - - minPart->erase(minPart->begin()); + if (minPart->size()) + { + entries.emplace_back(std::move(minPart->begin()->second)); + minPart->erase(minPart->begin()); + } + if (minPart->empty()) entryParts.erase(minPart); } diff --git a/geocoder/hierarchy_reader.hpp b/geocoder/hierarchy_reader.hpp index 7694b986da..db460bbf4f 100644 --- a/geocoder/hierarchy_reader.hpp +++ b/geocoder/hierarchy_reader.hpp @@ -2,6 +2,8 @@ #include "geocoder/hierarchy.hpp" +#include "base/exception.hpp" + #include <fstream> #include <map> #include <mutex> @@ -9,13 +11,14 @@ namespace geocoder { - class HierarchyReader { public: using Entry = Hierarchy::Entry; using ParsingStats = Hierarchy::ParsingStats; + DECLARE_EXCEPTION(OpenException, RootException); + HierarchyReader(std::string const & pathToJsonHierarchy); auto ReadEntries(size_t readerCount, ParsingStats & stats) -> std::vector<Entry>; @@ -27,5 +30,4 @@ private: std::ifstream m_fileStm; std::mutex m_mutex; }; - } // namespace geocoder |