From 51a5443baed67eed39dc26a0f8bff546650ab6d8 Mon Sep 17 00:00:00 2001
From: pans <pansen626@sina.com>
Date: 星期二, 16 四月 2019 17:12:51 +0800
Subject: [PATCH] 添加注释
---
QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp | 49 ++++++++++++++++++++++++++-----------------------
1 files changed, 26 insertions(+), 23 deletions(-)
diff --git a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp
index 4cab786..3281d1c 100644
--- a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp
+++ b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp
@@ -54,11 +54,15 @@
//#todo map 1->2 modify 2->1
bool FaceDBCompareServer::compare(thread::id key, AlarmData *alarmData, int topN) {
+ m_dbRWLocks_Lock.wrlock();
if (m_dbRWLocks.find(key) == m_dbRWLocks.end()) {
m_dbRWLocks[key] = RWLock();
}
RWLock &t_rwl = m_dbRWLocks[key];
+ DBG("m_dbRWLocks ok");
+ m_dbRWLocks_Lock.unlock();
// ClockTimer clockTimer("compare ");
+ //淇濇姢 t_compareResults
RWLock t_rwLock;
m_rwLock.rdlock();
@@ -77,12 +81,15 @@
FaceResult tface{0, data.uuid, alarmData->tableName, sc, data.faceUrl, data.idcard, ""};
t_rwLock.wrlock();
//#todo
+ // 瀵规瘮缁撴灉淇濆瓨
if (sc < t_compareResults.end()->second.confidence) {
t_rwLock.unlock();
return;
}
+ // 淇濆瓨瀵规瘮缁撴灉
t_compareResults.insert(make_pair(tface.confidence, tface));
//#todo 10
+ // 鍙繚鐣欐渶楂樼殑n涓姣旂粨鏋�
if (t_compareResults.size() > topN) {
t_compareResults.erase((--t_compareResults.end()), t_compareResults.end());
}
@@ -116,8 +123,11 @@
int maxSearchFaces = alarmData->num;
t_rwl.wrlock();
+ DBG("topResult[key] before");
auto &t_topResult = topResult[key];
+ DBG("topResult[key] ok");
t_topResult.clear();
+ // 瀵规瘮缁撴灉杞崲
for (auto &item : t_compareResults) {
auto &it = item.second;
//#todo
@@ -191,44 +201,37 @@
m_rwLock.wrlock();
if (t_json["\"syncTpye\""].type() == Json::nullValue) {
+ // 鍚屾搴�/鐗瑰緛鏄痓ase64
+// #todo sqlite search data from file
auto str_tab = t_json["\"tableName\""].asString();
+ DBG("str_tab is " << str_tab);
m_tableName = str_tab.substr(1, str_tab.length() - 2);//.append("_fea");
+ DBG("m_tableName is " << m_tableName);
- string tet = "./syncDBClient ";
- string str_json = writer.write(t_json);
- tet.append("\"" + str_json.substr(0, str_json.length() - 1) + "\" ");
- INFO(tet);
- system(tet.c_str());
dataMap.clear();
try {
- // init
- BISTL::BiMapFeaData biMapFeaData(m_tableName);
- auto mymap = biMapFeaData.getMap();
- auto size = mymap->size();
- //#todo
- for (auto it = mymap->begin(); it != mymap->end(); it++) {
- string str_uuid(it->second.m_id.data());
- string ft(it->second.m_feature.data());
- string imgUrl(it->second.m_imgUrl.data());
- string strIdCard(it->second.m_idcard.data());
+
+ auto mymap = m_erlangDbTool->loadFaceFeaData(m_tableName);
+ DBG(m_tableName << " db size is " << mymap.size());
+ for (auto &item : mymap) {
+ auto &it = item.second;
string str2;
- str2 = base64.Decode(ft.data(), ft.length());
+ str2 = base64.Decode(it.feature.data(), it.feature.size());
std::vector<unsigned char> t_fea;
t_fea.resize(str2.size());
memcpy(t_fea.data(), str2.data(), str2.size());
- auto &test = dataMap[str_uuid];
- test.uuid = str_uuid;
+ auto &test = dataMap[it.id];
+ test.uuid = it.id;
test.features.push_back(t_fea);
- test.faceUrl = imgUrl;
- test.idcard = strIdCard;
+ test.faceUrl = it.img;
+ test.idcard = it.idcard;
+ test.enabled = it.enable;
+ test.monLevel = it.monLevel;
}
} catch (const std::exception &e) {
printf("Exception:%s\n", e.what());
- BISTL::shared_memory_object::remove(m_tableName.c_str());
}
- BISTL::shared_memory_object::remove(m_tableName.c_str());
appPref.setIntData(m_tableName, 1);
- DBG(m_tableName << " size is " << dataMap.size());
} else {
//#todo get sqlite3 data
m_tableName = t_json["tableName"].asCString();
--
Gitblit v1.8.0