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:
authorYuri Gorshenin <y@maps.me>2015-07-08 15:00:30 +0300
committerAlex Zolotarev <alex@maps.me>2015-09-23 02:54:45 +0300
commitfda4e3603d8bd3ce40816344afc8f0f88f3e2afd (patch)
treea23b273110780feba0ff39684582a01cd8f206fe /indexer/mwm_set.cpp
parenta64351d1e62ce58b5a4a8d768a8541c8771f294f (diff)
[index, mwm-set] MwmLock -> MwmHandle
Diffstat (limited to 'indexer/mwm_set.cpp')
-rw-r--r--indexer/mwm_set.cpp71
1 files changed, 43 insertions, 28 deletions
diff --git a/indexer/mwm_set.cpp b/indexer/mwm_set.cpp
index 76d21b8656..4d2e90d7d9 100644
--- a/indexer/mwm_set.cpp
+++ b/indexer/mwm_set.cpp
@@ -12,7 +12,7 @@
using platform::CountryFile;
using platform::LocalCountryFile;
-MwmInfo::MwmInfo() : m_minScale(0), m_maxScale(0), m_status(STATUS_DEREGISTERED), m_lockCount(0) {}
+MwmInfo::MwmInfo() : m_minScale(0), m_maxScale(0), m_status(STATUS_DEREGISTERED), m_numRefs(0) {}
MwmInfo::MwmTypeT MwmInfo::GetType() const
{
@@ -24,42 +24,42 @@ MwmInfo::MwmTypeT MwmInfo::GetType() const
return COASTS;
}
-MwmSet::MwmLock::MwmLock() : m_mwmSet(nullptr), m_mwmId(), m_value(nullptr) {}
+MwmSet::MwmHandle::MwmHandle() : m_mwmSet(nullptr), m_mwmId(), m_value(nullptr) {}
-MwmSet::MwmLock::MwmLock(MwmSet & mwmSet, MwmId const & mwmId)
+MwmSet::MwmHandle::MwmHandle(MwmSet & mwmSet, MwmId const & mwmId)
: m_mwmSet(&mwmSet), m_mwmId(mwmId), m_value(m_mwmSet->LockValue(m_mwmId))
{
}
-MwmSet::MwmLock::MwmLock(MwmSet & mwmSet, MwmId const & mwmId, TMwmValueBasePtr value)
+MwmSet::MwmHandle::MwmHandle(MwmSet & mwmSet, MwmId const & mwmId, TMwmValueBasePtr value)
: m_mwmSet(&mwmSet), m_mwmId(mwmId), m_value(value)
{
}
-MwmSet::MwmLock::MwmLock(MwmLock && lock)
- : m_mwmSet(lock.m_mwmSet), m_mwmId(lock.m_mwmId), m_value(move(lock.m_value))
+MwmSet::MwmHandle::MwmHandle(MwmHandle && handle)
+ : m_mwmSet(handle.m_mwmSet), m_mwmId(handle.m_mwmId), m_value(move(handle.m_value))
{
- lock.m_mwmSet = nullptr;
- lock.m_mwmId.Reset();
+ handle.m_mwmSet = nullptr;
+ handle.m_mwmId.Reset();
}
-MwmSet::MwmLock::~MwmLock()
+MwmSet::MwmHandle::~MwmHandle()
{
if (m_mwmSet && m_value)
m_mwmSet->UnlockValue(m_mwmId, m_value);
}
-shared_ptr<MwmInfo> const & MwmSet::MwmLock::GetInfo() const
+shared_ptr<MwmInfo> const & MwmSet::MwmHandle::GetInfo() const
{
- ASSERT(IsLocked(), ("MwmLock is not active."));
+ ASSERT(IsAlive(), ("MwmHandle is not active."));
return m_mwmId.GetInfo();
}
-MwmSet::MwmLock & MwmSet::MwmLock::operator=(MwmLock && lock)
+MwmSet::MwmHandle & MwmSet::MwmHandle::operator=(MwmHandle && handle)
{
- swap(m_mwmSet, lock.m_mwmSet);
- swap(m_mwmId, lock.m_mwmId);
- swap(m_value, lock.m_value);
+ swap(m_mwmSet, handle.m_mwmSet);
+ swap(m_mwmId, handle.m_mwmId);
+ swap(m_value, handle.m_value);
return *this;
}
@@ -84,7 +84,7 @@ MwmSet::MwmId MwmSet::GetMwmIdByCountryFileImpl(CountryFile const & countryFile)
return MwmId(it->second.back());
}
-pair<MwmSet::MwmLock, bool> MwmSet::Register(LocalCountryFile const & localFile)
+pair<MwmSet::MwmHandle, MwmSet::RegResult> MwmSet::Register(LocalCountryFile const & localFile)
{
lock_guard<mutex> lock(m_lock);
@@ -108,28 +108,28 @@ pair<MwmSet::MwmLock, bool> MwmSet::Register(LocalCountryFile const & localFile)
{
LOG(LWARNING, ("Trying to add already registered mwm:", name));
info->SetStatus(MwmInfo::STATUS_REGISTERED);
- return make_pair(GetLock(id), false);
+ return make_pair(GetLock(id), RegResult::VersionAlreadyExists);
}
LOG(LWARNING, ("Trying to add too old (", localFile.GetVersion(), ") mwm (", name,
"), current version:", info->GetVersion()));
- return make_pair(MwmLock(), false);
+ return make_pair(MwmHandle(), RegResult::VersionTooOld);
}
-pair<MwmSet::MwmLock, bool> MwmSet::RegisterImpl(LocalCountryFile const & localFile)
+pair<MwmSet::MwmHandle, MwmSet::RegResult> MwmSet::RegisterImpl(LocalCountryFile const & localFile)
{
shared_ptr<MwmInfo> info(new MwmInfo());
// This function can throw an exception for a bad mwm file.
if (!GetVersion(localFile, *info))
- return make_pair(MwmLock(), false);
+ return make_pair(MwmHandle(), RegResult::BadFile);
info->SetStatus(MwmInfo::STATUS_REGISTERED);
info->m_file = localFile;
string const name = localFile.GetCountryName();
vector<shared_ptr<MwmInfo>> & infos = m_info[name];
infos.push_back(info);
- return make_pair(GetLock(MwmId(info)), true);
+ return make_pair(GetLock(MwmId(info)), RegResult::Success);
}
bool MwmSet::DeregisterImpl(MwmId const & id)
@@ -138,7 +138,7 @@ bool MwmSet::DeregisterImpl(MwmId const & id)
return false;
shared_ptr<MwmInfo> const & info = id.GetInfo();
- if (info->m_lockCount == 0)
+ if (info->m_numRefs == 0)
{
info->SetStatus(MwmInfo::STATUS_DEREGISTERED);
vector<shared_ptr<MwmInfo>> & infos = m_info[info->GetCountryName()];
@@ -199,7 +199,7 @@ MwmSet::TMwmValueBasePtr MwmSet::LockValueImpl(MwmId const & id)
if (!info->IsUpToDate())
return TMwmValueBasePtr();
- ++info->m_lockCount;
+ ++info->m_numRefs;
// Search in cache.
for (CacheType::iterator it = m_cache.begin(); it != m_cache.end(); ++it)
@@ -228,9 +228,9 @@ void MwmSet::UnlockValueImpl(MwmId const & id, TMwmValueBasePtr p)
return;
shared_ptr<MwmInfo> const & info = id.GetInfo();
- ASSERT_GREATER(info->m_lockCount, 0, ());
- --info->m_lockCount;
- if (info->m_lockCount == 0 && info->GetStatus() == MwmInfo::STATUS_MARKED_TO_DEREGISTER)
+ ASSERT_GREATER(info->m_numRefs, 0, ());
+ --info->m_numRefs;
+ if (info->m_numRefs == 0 && info->GetStatus() == MwmInfo::STATUS_MARKED_TO_DEREGISTER)
VERIFY(DeregisterImpl(id), ());
if (info->IsUpToDate())
@@ -266,7 +266,7 @@ MwmSet::MwmId MwmSet::GetMwmIdByCountryFile(CountryFile const & countryFile) con
return id;
}
-MwmSet::MwmLock MwmSet::GetMwmLockByCountryFile(CountryFile const & countryFile)
+MwmSet::MwmHandle MwmSet::GetMwmHandleByCountryFile(CountryFile const & countryFile)
{
lock_guard<mutex> lock(m_lock);
@@ -274,7 +274,7 @@ MwmSet::MwmLock MwmSet::GetMwmLockByCountryFile(CountryFile const & countryFile)
TMwmValueBasePtr value(nullptr);
if (id.IsAlive())
value = LockValueImpl(id);
- return MwmLock(*this, id, value);
+ return MwmHandle(*this, id, value);
}
void MwmSet::ClearCacheImpl(CacheType::iterator beg, CacheType::iterator end)
@@ -301,3 +301,18 @@ void MwmSet::ClearCache(MwmId const & id)
{
ClearCacheImpl(RemoveIfKeepValid(m_cache.begin(), m_cache.end(), MwmIdIsEqualTo(id)), m_cache.end());
}
+
+string DebugPrint(MwmSet::RegResult result)
+{
+ switch (result)
+ {
+ case MwmSet::RegResult::Success:
+ return "Success";
+ case MwmSet::RegResult::VersionAlreadyExists:
+ return "VersionAlreadyExists";
+ case MwmSet::RegResult::VersionTooOld:
+ return "VersionTooOld";
+ case MwmSet::RegResult::BadFile:
+ return "BadFile";
+ }
+}