派生自 development/c++

pansen
2019-03-07 979bc003bce710bf300bc2bd87a8278585678763
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//
// 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