#include <unordered_set>
#include <vector>
+#include <database.hpp>
#include "filter_checker_provider.hh"
#include "pkgmgrinfo_basic.h"
#include "pkgmgrinfo_private.h"
static DBHandleProvider& GetInst(uid_t uid);
static bool IsCrashedWriteRequest();
static bool IsWriter(pid_t pid);
- std::vector<std::pair<std::string, uid_t>> GetParserDBPath(int pid,
- bool write);
- std::string GetCertDBPath(int pid, bool write);
- 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<std::pair<std::string, uid_t>> GetParserDBPath();
+ std::string GetCertDBPath();
+ int UpdateCache(const tizen_base::Database& db, pid_t pid, uid_t uid,
+ bool write, const std::string& locale);
std::vector<std::shared_ptr<package_x>> GetPackages(
pid_t pid, pkgmgrinfo_filter_x* filter,
const std::string& package);
const std::string& app);
void TrimCache();
void RegisterPendingPackageInfo(package_x* info);
- bool UpdatePendingPackageInfo(sqlite3* db,
+ void UpdatePendingPackageInfo(const tizen_base::Database& 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);
+ 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:
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 AddPackage(std::string package, std::shared_ptr<package_x> info);
void AddApplication(std::string app, std::shared_ptr<application_x> info);
void InsertPID(pid_t pid);
bool ErasePID(pid_t pid);
+ std::shared_ptr<package_x> GetPackageByApp(const char* appid);
private:
static std::unordered_map<uid_t,
std::unique_ptr<DBHandleProvider>> provider_map_;
- static bool is_global_memdb_set_;
- static std::unique_ptr<sqlite3, decltype(sqlite3_close_v2)*>
- global_parser_memdb_handle_;
- static std::unique_ptr<sqlite3, decltype(sqlite3_close_v2)*>
- cert_memdb_handle_;
static std::string global_parser_filedb_path_;
static std::string cert_filedb_path_;
static std::unordered_set<pid_t> writer_pid_list_;
static std::shared_mutex pid_list_lock_;
uid_t uid_;
- bool is_user_memdb_set_;
- std::unique_ptr<sqlite3, decltype(sqlite3_close_v2)*>
- parser_memdb_handle_;
std::string user_parser_memdb_path_;
std::string user_parser_filedb_path_;
bool released_ = true;