blob: 1712c87caf7f6a610b0c14d73c255ffbce7c0aaa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#include "memory_feature_index.hpp"
namespace df
{
void MemoryFeatureIndex::ReadFeaturesRequest(vector<FeatureInfo> & features, vector<size_t> & indexes)
{
threads::MutexGuard lock(m_mutex);
for (size_t i = 0; i < features.size(); ++i)
{
FeatureInfo & info = features[i];
ASSERT(m_features.find(info.m_id) != m_features.end() || !info.m_isOwner,());
if (!info.m_isOwner && m_features.insert(info.m_id).second)
{
indexes.push_back(i);
info.m_isOwner = true;
}
}
}
void MemoryFeatureIndex::RemoveFeatures(vector<FeatureInfo> & features)
{
threads::MutexGuard lock(m_mutex);
for (size_t i = 0; i < features.size(); ++i)
{
FeatureInfo & info = features[i];
if (info.m_isOwner)
{
VERIFY(m_features.erase(info.m_id) == 1, ());
info.m_isOwner = false;
}
}
}
} // namespace df
|