From e15c4888f720b8781260b901ac82d058f8f7c3b5 Mon Sep 17 00:00:00 2001 From: chenshijun <csj_sky@126.com> Date: 星期三, 27 三月 2019 14:34:37 +0800 Subject: [PATCH] 移植nsq到项目中,将最短最长时长的参数修改成nsq配置 --- QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp | 69 +++++++++++++++++++++++----------- 1 files changed, 47 insertions(+), 22 deletions(-) diff --git a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp index 4cab786..1c7ca29 100644 --- a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp +++ b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp @@ -54,10 +54,13 @@ //#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 "); RWLock t_rwLock; @@ -116,7 +119,9 @@ 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; @@ -191,44 +196,64 @@ 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()); +// 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()); +// BISTL::BiMapFeaData biMapFeaData(m_tableName); +// auto mymap = biMapFeaData.getMap(); + + 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; } +// //#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()); +// string str2; +// str2 = base64.Decode(ft.data(), ft.length()); +// 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; +// test.features.push_back(t_fea); +// test.faceUrl = imgUrl; +// test.idcard = strIdCard; +// } } 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()); } - BISTL::shared_memory_object::remove(m_tableName.c_str()); appPref.setIntData(m_tableName, 1); - DBG(m_tableName << " size is " << dataMap.size()); +// BISTL::shared_memory_object::remove(m_tableName.c_str()); } else { //#todo get sqlite3 data m_tableName = t_json["tableName"].asCString(); -- Gitblit v1.8.0