-void WorkerThread::Run() {
- std::unique_ptr<request_handler::AbstractRequestHandler>
- handler[pkgmgr_common::ReqType::MAX];
- handler[pkgmgr_common::ReqType::GET_PKG_INFO].reset(
- new request_handler::GetPkginfoRequestHandler());
- handler[pkgmgr_common::ReqType::GET_APP_INFO].reset(
- new request_handler::GetAppinfoRequestHandler());
- handler[pkgmgr_common::ReqType::SET_PKG_INFO].reset(
- new request_handler::SetPkginfoRequestHandler());
- handler[pkgmgr_common::ReqType::SET_CERT_INFO].reset(
- new request_handler::SetCertRequestHandler());
- handler[pkgmgr_common::ReqType::GET_CERT_INFO].reset(
- new request_handler::GetCertRequestHandler());
- handler[pkgmgr_common::ReqType::GET_PKG_DEP_INFO].reset(
- new request_handler::GetDepinfoRequestHandler());
- handler[pkgmgr_common::ReqType::QUERY].reset(
- new request_handler::QueryRequestHandler());
- handler[pkgmgr_common::ReqType::COMMAND].reset(
- new request_handler::CommandRequestHandler());
- handler[pkgmgr_common::ReqType::CREATE_DB].reset(
- new request_handler::CreateDBRequestHandler());
- handler[pkgmgr_common::ReqType::CREATE_CACHE].reset(
- new request_handler::CreateCacheRequestHandler());
+std::shared_ptr<PkgRequest> WorkerThread::PopQueue() {
+ SetMemoryTrimTimer();
+ std::unique_lock<std::mutex> u(lock_);
+ cv_.wait(u, [this] { return !this->queue_.empty() || stop_all_; });
+ if (stop_all_ && queue_.empty())
+ return nullptr;