派生自 development/c++

pansen
2019-03-06 a2dfb4907fd11e0a64ba16419dce066509462297
QiaoJiaSystem/VideoAnalysFromHC/BaiscSDKAnalysVideo.h
@@ -16,51 +16,51 @@
#include <basic/util/app/AppPreference.hpp>
#include <basic/http_server/HttpSrvRetRecieve.hpp>
#include <basic/util/net_config/net_config.h>
#include "DBStruct.h"
#define SETSCORE(VEC, POS, IDENT) appPref.setFloatData(IDENT, POS >= VEC.size() ? 80 : VEC[POS]);
class BaiscSDKAnalysVideo : public mythread<getsdkHdlManage> {
    using TASK_FUNCTION = std::function<void(std::shared_ptr<finishSdkHdlManage> &, int)>;
public:
    BaiscSDKAnalysVideo(TASK_FUNCTION task_f = nullptr) : m_task_function(task_f) {
        resetFdfs();
        {
            std::thread httpServer([&]() {
                HttpSrvRetRecieve httpSrvRetRecieve("0.0.0.0", 9090, 1);
                httpSrvRetRecieve.setInfo("^/resetFdfs$", "POST", std::bind(&BaiscSDKAnalysVideo::resetFdfs, this,
                                                                            std::placeholders::_1,
                                                                            std::placeholders::_2,
                                                                            std::placeholders::_3));
                httpSrvRetRecieve.start();
                httpSrvRetRecieve.waitForShutDown();
            });
            httpServer.detach();
        }
//        resetFdfs();
//        {
//            std::thread httpServer([&]() {
//                HttpSrvRetRecieve httpSrvRetRecieve("0.0.0.0", 9090, 1);
//                httpSrvRetRecieve.setInfo("^/resetFdfs$", "POST", std::bind(&BaiscSDKAnalysVideo::resetFdfs, this,
//                                                                            std::placeholders::_1,
//                                                                            std::placeholders::_2,
//                                                                            std::placeholders::_3));
//                httpSrvRetRecieve.start();
//                httpSrvRetRecieve.waitForShutDown();
//            });
//            httpServer.detach();
//        }
    }
    ~BaiscSDKAnalysVideo() {
    }
    std::string resetFdfs(std::string ip = "", unsigned int port = 0, std::string content = "") {
        std::thread reset([&]() {
            fdfsClient.rwLock.rdlock();
            if (fdfsClient.fastFds != nullptr) {
                delete fdfsClient.fastFds;
            }
            fdfsClient.fastFds = new FastFds("fastDfsClient.conf");
            fdfsClient.rwLock.unlock();
        });
        reset.detach();
        return "";
    }
//    std::string resetFdfs(std::string ip = "", unsigned int port = 0, std::string content = "") {
//
//        std::thread reset([&]() {
//            fdfsClient.rwLock.rdlock();
//            if (fdfsClient.fastFds != nullptr) {
//                delete fdfsClient.fastFds;
//            }
//            fdfsClient.fastFds = new FastFds("fastDfsClient.conf");
//            fdfsClient.rwLock.unlock();
//        });
//        reset.detach();
//
//        return "";
//    }
private:
    virtual void doFunc(std::shared_ptr<getsdkHdlManage> spPacket) {
//        DBG("do func sdk");
        Json::Value json;
  //      Json::Value json;
        //split sdks enable
        //#todo other sdk
@@ -70,42 +70,62 @@
//            std::string s_c = str_cmp_thr;
        vector<int> sdkDetCoVec = chnString2Vec(spPacket->str_det_thr);
        vector<int> sdkComCoVec = chnString2Vec(spPacket->str_cmp_thr);
        SdkRuleMap ruleMap;
        int t_size = sdkVec.size();
        std::string str_pre(spPacket->strDevID);
        str_pre.append(to_string(spPacket->nChannelID));
        for (int i = 0; i < t_size; i++) {
            switch (sdkVec[i]) {
                case 1: {
                    json["face.enable"] = "1";
                case FaceSdk: {
//                    json["face.enable"] = "1";
                    DBG("" << str_pre);
                    DBG(" TESTCODE setValue" << str_pre << "  " << sdkDetCoVec[i] << "  " << sdkComCoVec[i]);
                    SETSCORE(sdkDetCoVec, i, str_pre + "face.det");
                    SETSCORE(sdkComCoVec, i, str_pre + "face.cmp");
//                    SETSCORE(sdkDetCoVec, i, str_pre + "face.det");
//                    SETSCORE(sdkComCoVec, i, str_pre + "face.cmp");
                    SdkRule rule;
                    rule.nIsRun=1;
                    rule.nQuality=sdkDetCoVec[i];
                    rule.nThreshold=sdkComCoVec[i];
                    rule.strAddr=spPacket->str_addr.c_str();
                    ruleMap[FaceSdk]=rule;
                    break;
                }
                case 2: {
                    DBG("XX.enable    " << "1");
                case CarSdk: {
//                    DBG("XX.enable    " << "1");
                    DBG(" TESTCODE setValue" << str_pre << "  " << sdkDetCoVec[i] << "  " << sdkComCoVec[i]);
                    SETSCORE(sdkDetCoVec, i, str_pre + "XX.det");
                    SETSCORE(sdkComCoVec, i, str_pre + "XX.cmp");
//                    SETSCORE(sdkDetCoVec, i, str_pre + "XX.det");
//                    SETSCORE(sdkComCoVec, i, str_pre + "XX.cmp");
                    SdkRule rule;
                    rule.nIsRun=1;
                    rule.nQuality=sdkDetCoVec[i];
                    rule.nThreshold=sdkComCoVec[i];
                    rule.strAddr=spPacket->str_addr.c_str();
                    ruleMap[CarSdk]=rule;
                    break;
                }
                case 3: {
                    json["yolo.enable"] = "1";
                case YoloSdk: {
//                    json["yolo.enable"] = "1";
                    DBG(" TESTCODE setValue" << str_pre << "  " << sdkDetCoVec[i] << "  " << sdkComCoVec[i]);
                    SETSCORE(sdkDetCoVec, i, str_pre + "yolo.det");
                    SETSCORE(sdkComCoVec, i, str_pre + "yolo.cmp");
//                    SETSCORE(sdkDetCoVec, i, str_pre + "yolo.det");
//                    SETSCORE(sdkComCoVec, i, str_pre + "yolo.cmp");
                    SdkRule rule;
                    rule.nIsRun=1;
                    rule.nQuality=sdkDetCoVec[i];
                    rule.nThreshold=sdkComCoVec[i];
                    rule.strAddr=spPacket->str_addr.c_str();
                    ruleMap[YoloSdk]=rule;
                    break;
                }
            }
        }
        json["addr"] = spPacket->str_addr;
     //   json["addr"] = spPacket->str_addr;
        INFO("cam add is " << spPacket->str_addr);
        //#todo get address
        AppPipeController _AppPipeController(spPacket->src_path, json);
        AppPipeController _AppPipeController(spPacket->src_path, ruleMap);
        _AppPipeController.setfdfsClient(&fdfsClient);
        //#todo from path get file list
        file_filter_type filter = [](const char *dirName, const char *dirent) {