return writer_pid_list_.erase(pid) == 1;
}
-void DBHandleProvider::RegisterPendingPackageInfo(
- package_x* info, pid_t pid) {
+void DBHandleProvider::RegisterPendingPackageInfo(package_x* info) {
if (!info || !info->package)
return;
- pending_pkg_[pid].emplace(info->package);
+ pending_pkg_.emplace(info->package);
}
bool DBHandleProvider::UpdatePendingPackageInfo(sqlite3* db,
pid_t pid, uid_t uid, const std::string& locale) {
- auto it = pending_pkg_.find(pid);
- if (it == pending_pkg_.end()) {
- LOG(WARNING) << "There is no package that is pending by the pid : " << pid;
- return true;
- }
-
GHashTable* list = g_hash_table_new(g_str_hash, g_str_equal);
if (list == nullptr) {
LOG(ERROR) << "Out of memory";
};
tmp_filter.cache_flag = true;
tmp_filter.list = g_slist_append(tmp_filter.list, (gpointer)&node);
- for (const auto& pkg : it->second) {
+ for (const auto& pkg : pending_pkg_) {
pkg_map_.erase(pkg);
for (auto& appid : pkg_app_map_[pkg]) {
app_map_.erase(appid);
g_hash_table_destroy(list);
g_slist_free(tmp_filter.list);
- pending_pkg_.erase(pid);
+ pending_pkg_.clear();
return true;
}
pid_t pid, pkgmgrinfo_filter_x* filter,
const std::string& app);
void TrimCache();
- void RegisterPendingPackageInfo(package_x* info, pid_t pid);
+ void RegisterPendingPackageInfo(package_x* info);
bool UpdatePendingPackageInfo(sqlite3* db,
pid_t pid, uid_t uid, const std::string& locale);
bool UpdateCachePkg(sqlite3* db, uid_t uid, const std::string& pkgid,
std::unordered_map<std::string, std::shared_ptr<package_x>> pkg_map_;
std::unordered_map<std::string, std::shared_ptr<application_x>> app_map_;
std::unordered_map<std::string, std::unordered_set<std::string>> pkg_app_map_;
- std::unordered_map<pid_t, std::unordered_set<std::string>> pending_pkg_;
+ std::unordered_set<std::string> pending_pkg_;
};
} // namespace database
auto lock = CacheFlag::GetWriterLock();
if (CacheFlag::GetStatus() == CacheFlag::Status::PREPARED)
- DBHandleProvider::GetInst(uid_)
- .RegisterPendingPackageInfo(package_, GetPID());
+ DBHandleProvider::GetInst(uid_).RegisterPendingPackageInfo(package_);
return ret;
}