#include "ProMemory.h" ProMemory::ProMemory() { this->initFaceFeatures(); } ProMemory::~ProMemory() { } QVector<QVariantMap> ProMemory::getFaceFeatures() { return this->faceFeatures; } void ProMemory::pushCasicFace(CasicFaceInfo faceInfo) { QMutex mutex; mutex.lock(); if (this->faceQueue.size() > 30) { QStack<CasicFaceInfo> empty; std::swap(empty, faceQueue); } faceQueue.push(faceInfo); mutex.unlock(); } CasicFaceInfo ProMemory::popCasicFace() { CasicFaceInfo result; QMutex mutex; mutex.lock(); if (this->faceQueue.size() > 0) { result = faceQueue.pop(); } mutex.unlock(); return result; } int ProMemory::getFaceQueueSize() { int size = 0; QMutex mutex; mutex.lock(); size = this->faceQueue.size(); mutex.unlock(); return size; } bool ProMemory::isFaceQueueEmpty() { bool empty = true; QMutex mutex; mutex.lock(); empty = this->faceQueue.isEmpty(); mutex.unlock(); return empty; } void ProMemory::clearFaceQueue() { QMutex mutex; mutex.lock(); QStack<CasicFaceInfo> empty; std::swap(empty, faceQueue); mutex.unlock(); } void ProMemory::pushCasicIris(CasicIrisInfo irisInfo) { QMutex mutex; mutex.lock(); if (this->irisQueue.size() > 30) { QStack<CasicIrisInfo> empty; std::swap(empty, irisQueue); } irisQueue.push(irisInfo); mutex.unlock(); } CasicIrisInfo ProMemory::popCasicIris() { CasicIrisInfo result; QMutex mutex; mutex.lock(); if (this->irisQueue.size() > 0) { result = irisQueue.pop(); } mutex.unlock(); return result; } int ProMemory::getIrisQueueSize() { int size = 0; QMutex mutex; mutex.lock(); size = this->irisQueue.size(); mutex.unlock(); return size; } bool ProMemory::isIrisQueueEmpty() { bool empty = true; QMutex mutex; mutex.lock(); empty = this->irisQueue.isEmpty(); mutex.unlock(); return empty; } void ProMemory::clearIrisQueue() { QMutex mutex; mutex.lock(); QStack<CasicIrisInfo> empty; std::swap(empty, irisQueue); mutex.unlock(); } void ProMemory::initFaceFeatures() { FaceDataDao faceDataDao; this->faceFeatures = faceDataDao.findAllRecord(); } void ProMemory::initIrisFeatures(QString personId) { irisRegistPro->sendDataToExract(QByteArray(QString("[-u]").append(personId).toLocal8Bit())); }