派生自 development/c++

pansen
2019-02-22 9186da86847cf954341d1bf58b0c4079a3ab5ac5
QiaoJiaSystem/StructureApp/HiredisTool.cpp
@@ -4,24 +4,22 @@
#include <jsoncpp/json/json.h>
#include <basic/debug/Debug.h>
#include <basic/util/app/AppConfig.h>
HiredisTool::HiredisTool():
m_redis(nullptr),
m_nImgListLen(0)
{
    m_nImgListLen(0) {
    init();
}
HiredisTool::~HiredisTool()
{
    if(m_redis != nullptr)
    {
HiredisTool::~HiredisTool() {
    if (m_redis != nullptr) {
        redisFree(m_redis);//析构函数释放资源
        DBG("~RedisTool :: free redis connection ") ;
    }
}
void HiredisTool::init()
{
void HiredisTool::init() {
       struct timeval timeout = { 1, 500000 }; // 1.5 seconds 设置连接等待时间
     //  m_nImgListLen=appConfig.getIntProperty("redis_buf_len");
@@ -34,9 +32,7 @@
            DBG("RedisTool : Connection error: %s"<< m_redis->errstr);
            redisFree(m_redis);
            m_redis= nullptr;
        }
        else
        {
    } else {
                DBG( "init redis tool success " );
        }
@@ -81,8 +77,7 @@
bool HiredisTool::pushImageBuf(const std::string& file_name,const cv::Mat& img)
{
bool HiredisTool::pushImageBuf(const std::string &file_name, const cv::Mat &img) {
       std::vector<uchar> buf;
@@ -104,8 +99,7 @@
      return true;
}
bool HiredisTool::setKeyImage(const std::string &file_name, const cv::Mat &img)
{
bool HiredisTool::setKeyImage(const std::string &file_name, const cv::Mat &img) {
    std::vector<uchar> buf;
@@ -113,7 +107,8 @@
    CvUtil::cvMat2Buffer(img,buf);
//      json["time"]=info.time;
    json["img"]=std::string(buf.begin(),buf.end());
    json["img"] = std::move(m_base64.Encode(buf.data(), buf.size()));
//    json["img"] = std::string(buf.begin(), buf.end());
    //    buf.clear();
//    std::string strBuf=std::string(buf.begin(),buf.end());
    if(!setKeyValue(file_name,json.toStyledString()));
@@ -128,8 +123,7 @@
}
void  HiredisTool::getImage(const std::string& file_name, cv::Mat& img)
{
void HiredisTool::getImage(const std::string &file_name, cv::Mat &img) {
        std::string content;
@@ -141,8 +135,7 @@
        Json::Reader reader;
        Json::Value value;
        if(!reader.parse(content,value))
        {
    if (!reader.parse(content, value)) {
           return ;
        }
@@ -160,8 +153,7 @@
}
void HiredisTool::getKeyImage(const std::string &imageName, cv::Mat &img)
{
void HiredisTool::getKeyImage(const std::string &imageName, cv::Mat &img) {
    std::string content;
    cv::Mat imgTep;
@@ -171,12 +163,12 @@
    Json::Reader reader;
    Json::Value value;
    if(!reader.parse(content,value))
    {
    if (!reader.parse(content, value)) {
        return ;
    }
    std::string str=value["img"].asString();
    str = std::move(m_base64.Decode(str.c_str(), str.size()));
    std::vector<uchar> data;
    data.resize(str.size());
@@ -195,25 +187,22 @@
//    DBG("type="<<type);
//    return hashSet(file_list,cam_id,type);
//}
bool HiredisTool::clearAllImageBuf()
{
bool HiredisTool::clearAllImageBuf() {
//    auto cam_map=findAllCamera();
//    for(auto cam:cam_map)
//    {
//        delKey(cam.first);
//    }
}
bool HiredisTool::listLpush(const std::string& key,const std::string& value)
{
    if(!checkParam())
    {
bool HiredisTool::listLpush(const std::string &key, const std::string &value) {
    if (!checkParam()) {
        return false;
    }
    redisReply *reply;
    reply = (redisReply*)redisCommand(m_redis,"lpush %s %s", key.c_str(),value.c_str());
    if(!checkResult(reply))
    {
    if (!checkResult(reply)) {
        return false;
    }
@@ -222,17 +211,14 @@
    return true;
}
bool HiredisTool::setKeyValue(const std::string &key, const std::string &value)
{
    if(!checkParam())
    {
bool HiredisTool::setKeyValue(const std::string &key, const std::string &value) {
    if (!checkParam()) {
        return false;
    }
    redisReply *reply;
    reply = (redisReply*)redisCommand(m_redis,"set %s %s", key.c_str(),value.c_str());
    if(!checkResult(reply))
    {
    if (!checkResult(reply)) {
        return false;
    }
@@ -241,22 +227,18 @@
    return true;
}
bool HiredisTool::getKeyValue(const std::string &key, std::string &value)
{
    if(!checkParam())
    {
bool HiredisTool::getKeyValue(const std::string &key, std::string &value) {
    if (!checkParam()) {
        return false;
    }
    redisReply *reply;
    //1.find all filename
    reply = (redisReply*)redisCommand(m_redis,"get %s  ", key.c_str());
    if(!checkResult(reply))
    {
    if (!checkResult(reply)) {
        return false;
    }
    if(reply->type == REDIS_REPLY_STRING)
    {
    if (reply->type == REDIS_REPLY_STRING) {
        value=reply->str;
    }
    freeReplyObject(reply);
@@ -264,32 +246,27 @@
    return true;
}
bool HiredisTool::listRpop(const std::string& key,std::string& value)
{
    if(!checkParam())
    {
bool HiredisTool::listRpop(const std::string &key, std::string &value) {
    if (!checkParam()) {
        return false;
    }
    redisReply *reply;
    //1.find all filename
    reply = (redisReply*)redisCommand(m_redis,"rpop %s  ", key.c_str());
    if(!checkResult(reply))
    {
    if (!checkResult(reply)) {
        return false;
    }
    if(reply->type == REDIS_REPLY_STRING)
    {
    if (reply->type == REDIS_REPLY_STRING) {
        value=reply->str;
    }
    freeReplyObject(reply);
    return true;
}
bool HiredisTool::hashSet(const std::string& tab,const std::string& key,const int& value)
{
    if(!checkParam())
    {
bool HiredisTool::hashSet(const std::string &tab, const std::string &key, const int &value) {
    if (!checkParam()) {
        return false;
    }
    redisReply *reply;
@@ -297,8 +274,7 @@
    reply = (redisReply*)redisCommand(m_redis,"hset %s %s %d", tab.c_str(),key.c_str(),value);
    if(!checkResult(reply))
    {
    if (!checkResult(reply)) {
        return false;
    }
    freeReplyObject(reply);
@@ -307,50 +283,43 @@
    return true;
}
int  HiredisTool::getSize(const std::string& key)
{
int HiredisTool::getSize(const std::string &key) {
    int size=0;
    if(!checkParam())
    {
    if (!checkParam()) {
        return size;
    }
    redisReply *reply;
    reply = (redisReply*)redisCommand(m_redis,"llen %s", key.c_str());
    if(!checkResult(reply))
    {
    if (!checkResult(reply)) {
        return size;
    }
    size=reply->integer;
    freeReplyObject(reply);
    return size;
}
bool HiredisTool::listLindex(const std::string& key,std::string& value)
{
bool HiredisTool::listLindex(const std::string &key, std::string &value) {
    int size=0;
    if(!checkParam())
    {
    if (!checkParam()) {
        return size;
    }
    redisReply *reply;
    reply = (redisReply*)redisCommand(m_redis,"lindex %s -1", key.c_str());
    if(!checkResult(reply))
    {
    if (!checkResult(reply)) {
        return false;
    }
    if(reply->type == REDIS_REPLY_STRING)
    {
    if (reply->type == REDIS_REPLY_STRING) {
        value=reply->str;
    }
    freeReplyObject(reply);
}
bool HiredisTool::delKey(const std::string& key)
{
    if(!checkParam())
    {
bool HiredisTool::delKey(const std::string &key) {
    if (!checkParam()) {
        return false;
    }
    redisReply *reply;
@@ -358,19 +327,16 @@
    reply = (redisReply*)redisCommand(m_redis,"del %s", key.c_str());
    if(!checkResult(reply))
    {
    if (!checkResult(reply)) {
        return false;
    }
    freeReplyObject(reply);
    return true;
}
bool HiredisTool::checkParam()
{
     if(m_redis == nullptr || m_redis->err)
     {
         if(m_redis)
         {
bool HiredisTool::checkParam() {
    if (m_redis == nullptr || m_redis->err) {
        if (m_redis) {
             redisFree(m_redis);
             m_redis= nullptr;
         }
@@ -380,46 +346,40 @@
     }
     return true;
}
bool HiredisTool::checkResult(redisReply *reply)
{
    if (reply==nullptr)
    {
bool HiredisTool::checkResult(redisReply *reply) {
    if (reply == nullptr) {
         DBG("reply nullptr !!!");
         return false;
    }
    if (reply->type == REDIS_REPLY_ERROR)
    {
    if (reply->type == REDIS_REPLY_ERROR) {
        ERR("redisCommand Error: "<<reply->str);
        freeReplyObject(reply);
        return false;
    }
    return true;
}
void HiredisTool::addFileInfo(const std::string& filename,const int& file_status)
{
void HiredisTool::addFileInfo(const std::string &filename, const int &file_status) {
      hashSet(file_list,filename,file_status);
 }
std::queue<cv::Mat> HiredisTool::getImgQue(const std::string& filename)
{
std::queue<cv::Mat> HiredisTool::getImgQue(const std::string &filename) {
    std::queue<cv::Mat> que;
    if(!checkParam())
    {
    if (!checkParam()) {
        return que;
    }
    redisReply *reply;
    reply = (redisReply*)redisCommand(m_redis,"lrange %s 0 -1", filename.c_str());
    if(!checkResult(reply))
    {
    if (!checkResult(reply)) {
        return que;
    }
    if(reply->type == REDIS_REPLY_ARRAY)
    {
        for(int i=0;i<reply->elements;++i)
        {
    if (reply->type == REDIS_REPLY_ARRAY) {
        for (int i = 0; i < reply->elements; ++i) {
            std::string str=reply->element[i]->str;
            std::vector<uchar> data;
            cv::Mat img;
@@ -431,11 +391,10 @@
    }
    freeReplyObject(reply);
}
std::map<std::string,int> HiredisTool::findAllFileStatus()
{
std::map<std::string, int> HiredisTool::findAllFileStatus() {
     std::map<std::string,int> fileMap;
     if(!checkParam())
     {
    if (!checkParam()) {
         return fileMap;
     }
@@ -443,16 +402,13 @@
     reply = (redisReply*)redisCommand(m_redis,"hgetall %s", file_list);
     if(!checkResult(reply))
     {
    if (!checkResult(reply)) {
         return fileMap;
     }
     if(reply->type == REDIS_REPLY_ARRAY)
     {
    if (reply->type == REDIS_REPLY_ARRAY) {
         for (int i= 0; i < reply->elements; i+=2)
         {
        for (int i = 0; i < reply->elements; i += 2) {
             std::string key=reply->element[i]->str;
             std::string value=reply->element[i+1]->str;
@@ -464,10 +420,9 @@
     freeReplyObject(reply);
     return fileMap;
}
bool HiredisTool::hashDel(const std::string& tab,const std::string &key)
{
    if(!checkParam())
    {
bool HiredisTool::hashDel(const std::string &tab, const std::string &key) {
    if (!checkParam()) {
        return false;
    }
    redisReply *reply;
@@ -475,8 +430,7 @@
    reply = (redisReply*)redisCommand(m_redis,"hdel %s %s", tab.c_str(),key.c_str());
    if(!checkResult(reply))
    {
    if (!checkResult(reply)) {
        return false;
    }
    freeReplyObject(reply);