//
|
// Created by pans on 4/27/18.
|
//
|
|
#ifndef FACESEARCHSERVER_FACEFEATURESEARCHSERVERI_H
|
#define FACESEARCHSERVER_FACEFEATURESEARCHSERVERI_H
|
|
#include <FaceSearchServer.h>
|
#include <Ice/Ice.h>
|
#include <basic/rpc/IceRpc.hpp>
|
#include <basic/db/Elasticsearch/EsDBTool.h>
|
#include <basic/util/app/AppConfig.h>
|
|
#include <ErlangDbTool.h>
|
#include <SqliteFaceEncap.h>
|
#include "FaceDBCompareServer.h"
|
|
//struct TableInfo {
|
// std::string tab_name;
|
// std::string startTime;
|
// std::string endTime;
|
// std::string bwType;
|
// std::string create_by;
|
//};
|
|
static bool t_live_ret = true;
|
static pthread_cond_t func_cond(PTHREAD_COND_INITIALIZER);
|
static pthread_mutex_t func_cond_mutex(PTHREAD_MUTEX_INITIALIZER);
|
|
|
void erlangCallBackFunc(std::string);
|
|
class FaceFeatureSearchServerI : public FaceSearch::FaceFeatureSearchServer {
|
public:
|
FaceFeatureSearchServerI();
|
|
FaceFeatureSearchServerI(Ice::CommunicatorPtr &ich, std::string nodeName, std::string cookie);
|
|
virtual ~FaceFeatureSearchServerI();
|
|
public:
|
virtual ::FaceSearch::FaceResults faceSearchMax(const ::FaceSearch::Data &, const ::std::string &,
|
const ::Ice::Current & = ::Ice::emptyCurrent);
|
|
virtual ::FaceSearch::FaceResults
|
faceSearchTopN(const ::FaceSearch::Data &, const ::std::string &, ::Ice::Int, ::Ice::Float,
|
const ::Ice::Current & = ::Ice::emptyCurrent);
|
|
private:
|
bool initErlang(std::string nodeName, std::string cookie);
|
|
//#todo delete cache
|
|
//#todo loadData
|
static bool loadFeatureData(FaceFeatureSearchServerI *faceFea);
|
|
static void dataUpdate(FaceFeatureSearchServerI *faceFea);
|
|
static void waitTables(FaceFeatureSearchServerI *faceFea, int loop = -1);
|
|
// void erlangCallBackFunc(std::string);
|
|
private:
|
long m_inTime;
|
std::map<std::string, FaceDBCompareServer *> m_faceFCMAP;
|
std::map<std::string, TableInfo> m_tableType;
|
|
RWLock m_rwLock;
|
ErlangTool::ErlangDbTool m_erlangDbTool;
|
SqliteFaceEncap m_sqliteFaceEncap;
|
std::mutex m_mutex;
|
bool m_retUpdatePthread;
|
|
Base64 base64;
|
// Ice::ObjectPrx base_FaceMemoryData;
|
// IceRpcClient<::FaceSearch::FaceMemoryDataPrx> m_faceMemoryClient;
|
// ::FaceSearch::FaceMemoryDataPrx serverFaceMemoryData;
|
|
// func_cond_mutex(PTHREAD_MUTEX_INITIALIZER), func_cond(PTHREAD_COND_INITIALIZER)
|
|
EsDBTool pManagerEsDB;//(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort"));
|
};
|
|
|
#endif //FACESEARCHSERVER_FACEFEATURESEARCHSERVERI_H
|