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:
authorLev Dragunov <l.dragunov@corp.mail.ru>2015-03-05 19:14:29 +0300
committerAlex Zolotarev <alex@maps.me>2015-09-23 02:38:23 +0300
commitc30ae8eab34ab5de5e7684400f5e9032fa8f3736 (patch)
tree90fb41dd723229f9f761ac5f17f0e28013060845 /indexer/features_offsets_table.cpp
parent3a3028d0599fd329dc0068f3487ae63a49380a4b (diff)
different file index pathes
Diffstat (limited to 'indexer/features_offsets_table.cpp')
-rw-r--r--indexer/features_offsets_table.cpp53
1 files changed, 31 insertions, 22 deletions
diff --git a/indexer/features_offsets_table.cpp b/indexer/features_offsets_table.cpp
index c39a691834..96eda2fbb8 100644
--- a/indexer/features_offsets_table.cpp
+++ b/indexer/features_offsets_table.cpp
@@ -3,10 +3,12 @@
#include "../indexer/data_header.hpp"
#include "../indexer/features_vector.hpp"
#include "../coding/file_writer.hpp"
+#include "../coding/internal/file_data.hpp"
+#include "../platform/platform.hpp"
#include "../base/assert.hpp"
#include "../base/scope_guard.hpp"
#include "../std/string.hpp"
-#include "../defines.hpp"
+
namespace feature
{
@@ -21,10 +23,10 @@ namespace feature
{
}
- FeaturesOffsetsTable::FeaturesOffsetsTable(FilesMappingContainer::Handle && handle)
- : m_handle(move(handle))
+ FeaturesOffsetsTable::FeaturesOffsetsTable(string const & fileName)
{
- succinct::mapper::map(m_table, m_handle.GetData<char>());
+ m_pSrc = unique_ptr<MmapReader>(new MmapReader(fileName));
+ succinct::mapper::map(m_table, reinterpret_cast<char const *>(m_pSrc->Data()));
}
// static
@@ -43,26 +45,29 @@ namespace feature
}
// static
- unique_ptr<FeaturesOffsetsTable> FeaturesOffsetsTable::Load(
- FilesMappingContainer const & container)
+ unique_ptr<FeaturesOffsetsTable> FeaturesOffsetsTable::Load(string const & countryName)
{
- FilesMappingContainer::Handle handle(container.Map(FEATURES_OFFSETS_TABLE_FILE_TAG));
- if (!handle.IsValid())
+ string const fileName = GetIndexFileName(countryName);
+ uint64_t size;
+ if (!GetPlatform().GetFileSizeByFullPath(fileName, size))
return unique_ptr<FeaturesOffsetsTable>();
- return unique_ptr<FeaturesOffsetsTable>(new FeaturesOffsetsTable(std::move(handle)));
+ return unique_ptr<FeaturesOffsetsTable>(new FeaturesOffsetsTable(fileName));
}
// static
unique_ptr<FeaturesOffsetsTable> FeaturesOffsetsTable::CreateIfNotExistsAndLoad(
- FilesMappingContainer const & container)
+ string const & countryName)
{
- if (container.IsExist(FEATURES_OFFSETS_TABLE_FILE_TAG))
- return Load(container);
-
- if (!container.IsExist(HEADER_FILE_TAG))
+ string const fileName = GetIndexFileName(countryName);
+ uint64_t size;
+ if (GetPlatform().GetFileSizeByFullPath(fileName,size))
+ return Load(countryName);
+
+ string const mwmName = GetPlatform().WritablePathForFile(countryName + DATA_FILE_EXTENSION);
+ FilesContainerR cont(mwmName);
+ if (!cont.IsExist(HEADER_FILE_TAG))
return unique_ptr<FeaturesOffsetsTable>();
- FilesContainerR cont(container.GetName());
DataHeader header;
header.Load(cont.GetReader(HEADER_FILE_TAG));
@@ -72,17 +77,16 @@ namespace feature
builder.PushOffset(offset);
});
unique_ptr<FeaturesOffsetsTable> table(Build(builder));
- FilesContainerW writeCont(container.GetName(), FileWriter::OP_WRITE_EXISTING);
- table->Save(writeCont);
+ table->Save(countryName);
return table;
}
- void FeaturesOffsetsTable::Save(FilesContainerW & container)
+ void FeaturesOffsetsTable::Save(string const & countryName)
{
- string const fileName = container.GetFileName() + "." FEATURES_OFFSETS_TABLE_FILE_TAG;
- MY_SCOPE_GUARD(deleteFileGuard, bind(&FileWriter::DeleteFileX, cref(fileName)));
- succinct::mapper::freeze(m_table, fileName.c_str());
- container.Write(fileName, FEATURES_OFFSETS_TABLE_FILE_TAG);
+ string const fileName = GetIndexFileName(countryName);
+ string const fileNameTmp = fileName + EXTENSION_TMP;
+ succinct::mapper::freeze(m_table, fileNameTmp.c_str());
+ my::RenameFileX(fileNameTmp, fileName);
}
uint64_t FeaturesOffsetsTable::GetFeatureOffset(size_t index) const
@@ -115,4 +119,9 @@ namespace feature
}
+ string FeaturesOffsetsTable::GetIndexFileName(string const & countryName)
+ {
+ return GetPlatform().WritablePathForFileIndexes(countryName) + countryName + FEATURES_OFFSETS_TABLE_FILE_EXT;
+ }
+
} // namespace feature