Improve handling of cache
[platform/core/appfw/pkgmgr-info.git] / src / server / database / db_handle_provider.hh
index f5df1e3..6f54d0b 100644 (file)
@@ -60,6 +60,15 @@ class EXPORT_API DBHandleProvider {
       pid_t pid, pkgmgrinfo_filter_x* filter,
       const std::string& app);
   void TrimCache();
+  void RegisterPendingPackageInfo(package_x* info, pid_t pid);
+  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,
+      const std::string& locale);
+  bool UpdateCacheApp(sqlite3* db, uid_t uid, const std::string& appid,
+      const std::string& locale);
+  bool UpdateCacheAppByPkgid(sqlite3* db, uid_t uid, const std::string& pkgid,
+      const std::string& locale);
 
  private:
   explicit DBHandleProvider(uid_t uid);
@@ -93,10 +102,10 @@ class EXPORT_API DBHandleProvider {
   std::string user_parser_memdb_path_;
   std::string user_parser_filedb_path_;
   bool released_ = true;
-  std::unordered_map<std::string, std::vector<std::shared_ptr<package_x>>>
-      pkg_map_;
-  std::unordered_map<std::string, std::vector<std::shared_ptr<application_x>>>
-      app_map_;
+  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_;
 };
 
 }  // namespace database