X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fserver%2Fdatabase%2Fdb_handle_provider.hh;h=e165e05d48ac8ae703bf36a384b3cbd0793a1193;hb=c7f6493964c621719db6f9404b524d90cac1e46b;hp=522bfe4575a26d51601b0aafa46153dc1f3aa60e;hpb=0ca84ebe03718a04f2171778faad9172c016ec2f;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 522bfe4..e165e05 100644 --- a/src/server/database/db_handle_provider.hh +++ b/src/server/database/db_handle_provider.hh @@ -21,13 +21,16 @@ #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,37 +45,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(sqlite3* 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); + 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: - DBHandleProvider(uid_t uid); - sqlite3* GetMemoryDBHandle(const std::string& filedb_path, - const std::string& memorydb_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, package_x* 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_; + std::unique_ptr> 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