X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fserver%2Fdatabase%2Fdb_handle_provider.hh;h=324f23cd91bfe1e0d41ef9ddf25161aa2551f911;hb=c55816f64e12a6032e037523673aaf802dfdee55;hp=df5e636bb0a6de74c9d9bbab378e75c700dc5743;hpb=e72f14b003ee2ad65823d72a0bde0ee9f92149c2;p=platform%2Fcore%2Fappfw%2Fpkgmgr-info.git diff --git a/src/server/database/db_handle_provider.hh b/src/server/database/db_handle_provider.hh index df5e636..324f23c 100644 --- a/src/server/database/db_handle_provider.hh +++ b/src/server/database/db_handle_provider.hh @@ -21,13 +21,17 @@ #include #include -#include #include -#include +#include +#include #include #include #include +#include +#include "filter_checker_provider.hh" +#include "pkgmgrinfo_basic.h" +#include "pkgmgrinfo_private.h" #include "shared_object.hh" namespace pkgmgr_server { @@ -42,34 +46,67 @@ class EXPORT_API DBHandleProvider { ~DBHandleProvider() = default; static DBHandleProvider& GetInst(uid_t uid); static bool IsCrashedWriteRequest(); - std::vector> GetParserDBPath(int pid, bool write); + static bool IsWriter(pid_t pid); + std::vector> GetParserDBPath(int pid, + bool write); std::string GetCertDBPath(int pid, bool write); - void SetMemoryMode(pid_t pid, bool flag); + void SetMemoryMode(pid_t pid); + void UnsetMemoryMode(pid_t pid); + int UpdateCache(const tizen_base::Database& db, pid_t pid, uid_t uid, + bool write, const std::string& locale); + std::vector> GetPackages( + pid_t pid, pkgmgrinfo_filter_x* filter, + const std::string& package); + std::vector> GetApplications( + pid_t pid, pkgmgrinfo_filter_x* filter, + const std::string& app); + void TrimCache(); + void RegisterPendingPackageInfo(package_x* info); + void UpdatePendingPackageInfo(const tizen_base::Database& db, + pid_t pid, uid_t uid, const std::string& locale); + bool UpdateCachePkg(const tizen_base::Database& db, uid_t uid, + const std::string& pkgid, const std::string& locale); + bool UpdateCacheApp(const tizen_base::Database& db, uid_t uid, + const std::string& appid, const std::string& locale); + bool UpdateCacheAppByPkgid(const tizen_base::Database& db, uid_t uid, + const std::string& pkgid, const std::string& locale); private: - DBHandleProvider(uid_t uid); - sqlite3* GetMemoryDBHandle(const std::string& filedb_path, + explicit DBHandleProvider(uid_t uid); + sqlite3* CreateMemoryDBHandle(const std::string& filedb_path, const std::string& memorydb_path); + bool IsMemoryDBActive(pid_t pid, bool write); + void ReleaseCache(); + void AddPackage(std::string package, std::shared_ptr info); + void AddApplication(std::string app, std::shared_ptr info); + void InsertPID(pid_t pid); + bool ErasePID(pid_t pid); private: - static std::unordered_map> provider_; - static bool is_memory_global_; + static std::unordered_map> provider_map_; + static bool is_global_memdb_set_; static std::unique_ptr - global_parser_memory_db_handle_; + global_parser_memdb_handle_; static std::unique_ptr - cert_memory_db_handle_; - static std::string global_parser_memory_db_path_; - static std::string global_parser_file_db_path_; - static std::string cert_memory_db_path_; - static std::string cert_file_db_path_; - static std::unordered_set pid_list_; + cert_memdb_handle_; + static std::string global_parser_filedb_path_; + static std::string cert_filedb_path_; + static std::unordered_set writer_pid_list_; static std::recursive_mutex lock_; + static std::shared_mutex pid_list_lock_; uid_t uid_; - bool is_memory_; - std::unique_ptr parser_memory_db_handle_; - std::string parser_memory_db_path_; - std::string parser_file_db_path_; + bool is_user_memdb_set_; + std::unique_ptr + parser_memdb_handle_; + std::string user_parser_memdb_path_; + std::string user_parser_filedb_path_; + bool released_ = true; + std::unordered_map> pkg_map_; + std::unordered_map> app_map_; + std::unordered_map> pkg_app_map_; + std::unordered_set pending_pkg_; }; } // namespace database