Fix pkgmgrinfo_plugininfo_foreach_plugininfo
[platform/core/appfw/pkgmgr-info.git] / src / manager / pkginfo_manager.cc
index f9ff82c..bb9463b 100644 (file)
@@ -69,7 +69,7 @@ int ValidateParcelable(
   }
 
   if (parcel->GetType() != parcel_type) {
-    LOG(ERROR) << "Invalid parcelable Type";
+    LOG(ERROR) << "Invalid parcelable Type " << parcel->GetType() << ' ' << parcel_type;
     return PMINFO_R_ERROR;
   }
 
@@ -120,9 +120,9 @@ extern "C" EXPORT_API int _pkginfo_get_packages(uid_t uid,
     LOG(DEBUG) << "No packages meets given condition for user " << uid;
     return PMINFO_R_ENOENT;
   }
-  for (auto pkginfo : result_list)
-    g_hash_table_insert(packages, (gpointer)pkginfo->package,
-                        (gpointer)pkginfo);
+  for (auto& pkginfo : result_list)
+    g_hash_table_insert(packages, reinterpret_cast<gpointer>(pkginfo->package),
+                        reinterpret_cast<gpointer>(pkginfo.get()));
 
   return PMINFO_R_OK;
 }
@@ -185,10 +185,10 @@ extern "C" EXPORT_API int _appinfo_get_applications(uid_t uid,
   std::shared_ptr<pcp::AppInfoParcelable> return_parcel(
       std::static_pointer_cast<pcp::AppInfoParcelable>(ptr));
 
-  std::vector<application_x*> result_list = return_parcel->ExtractAppInfo();
-  for (application_x* app : result_list)
-    g_hash_table_insert(packages, (gpointer)app->appid,
-        (gpointer)app);
+  std::vector<std::shared_ptr<application_x>> result_list = return_parcel->ExtractAppInfo();
+  for (auto& app : result_list)
+    g_hash_table_insert(packages, reinterpret_cast<gpointer>(app->appid),
+        reinterpret_cast<gpointer>(app.get()));
 
   return PMINFO_R_OK;
 }
@@ -202,7 +202,7 @@ extern "C" EXPORT_API char* _appinfo_get_localed_label(
           pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
-      pkgmgr_common::ReqType::QUERY);
+      pkgmgr_common::ReqType::READ_QUERY);
   if (!client.SendRequest())
     return nullptr;
 
@@ -241,7 +241,7 @@ extern "C" EXPORT_API int _appinfo_get_datacontrol_info(
           pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
-      pkgmgr_common::ReqType::QUERY);
+      pkgmgr_common::ReqType::READ_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -294,7 +294,7 @@ extern "C" EXPORT_API int _appinfo_get_datacontrol_appid(
           pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
-      pkgmgr_common::ReqType::QUERY);
+      pkgmgr_common::ReqType::READ_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -338,7 +338,7 @@ extern "C" EXPORT_API int _appinfo_get_datacontrol_trusted_info(
           pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
-      pkgmgr_common::ReqType::QUERY);
+      pkgmgr_common::ReqType::READ_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -392,7 +392,7 @@ extern "C" EXPORT_API int _appinfo_get_datacontrol_privileges(
           pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
-      pkgmgr_common::ReqType::QUERY);
+      pkgmgr_common::ReqType::READ_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -432,7 +432,7 @@ extern "C" EXPORT_API int _appinfo_get_appcontrol_privileges(
           pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
-      pkgmgr_common::ReqType::QUERY);
+      pkgmgr_common::ReqType::READ_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -486,7 +486,7 @@ extern "C" EXPORT_API int _plugininfo_get_appids(
           pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
 
   pkgmgr_client::PkgInfoClient client(parcelable, _getuid(),
-      pkgmgr_common::ReqType::QUERY);
+      pkgmgr_common::ReqType::READ_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -498,15 +498,15 @@ extern "C" EXPORT_API int _plugininfo_get_appids(
   std::shared_ptr<pcp::ResultParcelable> return_parcel(
       std::static_pointer_cast<pcp::ResultParcelable>(ptr));
 
+  auto& result_list = return_parcel->GetResult();
+  if (result_list.size() == 0)
+    return PMINFO_R_ENOENT;
+
   if (return_parcel->GetCol() != 1) {
     LOG(ERROR) << "Invalid result";
     return PMINFO_R_ERROR;
   }
 
-  auto& result_list = return_parcel->GetResult();
-  if (result_list.size() == 0)
-    return PMINFO_R_ENOENT;
-
   for (auto& result : result_list) {
     if (result.size() != 1) {
       LOG(ERROR) << "Invalid result";
@@ -566,12 +566,12 @@ extern "C" EXPORT_API int _get_pkg_updateinfo(const char* pkgid,
   }
 
   std::shared_ptr<pcp::AbstractParcelable> parcelable(
-      new pcp::QueryParcelable(uid, std::move(info),
+      new pcp::QueryParcelable(uid, info,
           pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
           pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
-      pkgmgr_common::ReqType::QUERY);
+      pkgmgr_common::ReqType::READ_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -657,7 +657,7 @@ extern "C" EXPORT_API int _pkginfo_set_usr_installed_storage(const char* pkgid,
           pkgmgr_common::DBOperationType::OPERATION_TYPE_WRITE));
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
-      pkgmgr_common::ReqType::QUERY);
+      pkgmgr_common::ReqType::WRITE_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -673,7 +673,7 @@ extern "C" EXPORT_API int _certinfo_compare_pkg_certinfo(const char* l_pkgid,
           pkgmgr_common::DBType::DB_TYPE_FILE_CERTDB,
           pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
   pkgmgr_client::PkgInfoClient client(parcelable, 0,
-      pkgmgr_common::ReqType::QUERY);
+      pkgmgr_common::ReqType::READ_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -720,7 +720,7 @@ extern "C" EXPORT_API int _certinfo_compare_app_certinfo(uid_t uid,
           pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
           pkgmgr_common::DBOperationType::OPERATION_TYPE_READ));
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
-      pkgmgr_common::ReqType::QUERY);
+      pkgmgr_common::ReqType::READ_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -769,7 +769,7 @@ extern "C" EXPORT_API int _parser_execute_write_query(
           pkgmgr_common::DBOperationType::OPERATION_TYPE_WRITE));
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
-                                      pkgmgr_common::ReqType::QUERY);
+                                      pkgmgr_common::ReqType::WRITE_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -790,12 +790,12 @@ extern "C" EXPORT_API int _parser_execute_write_queries(
   }
 
   std::shared_ptr<pcp::AbstractParcelable> parcelable(
-      new pcp::QueryParcelable(uid, std::move(queries),
+      new pcp::QueryParcelable(uid, queries,
           pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB,
           pkgmgr_common::DBOperationType::OPERATION_TYPE_WRITE));
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
-      pkgmgr_common::ReqType::QUERY);
+      pkgmgr_common::ReqType::WRITE_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -807,8 +807,9 @@ extern "C" EXPORT_API int _parser_insert_manifest_info(
     manifest_x* mfx, uid_t uid) {
   auto parcelable =
       std::make_shared<pcp::PkgInfoParcelable>(uid,
-          std::vector<package_x*>{mfx},
-          pkgmgr_common::PkgWriteType::Insert, false);
+          std::vector<std::shared_ptr<package_x>>(1,
+              std::shared_ptr<package_x>(mfx, [] (package_x*) -> void {})),
+              pkgmgr_common::PkgWriteType::Insert, false);
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
       pkgmgr_common::ReqType::SET_PKG_INFO);
@@ -823,8 +824,9 @@ extern "C" EXPORT_API int _parser_update_manifest_info(
     manifest_x* mfx, uid_t uid) {
   auto parcelable =
       std::make_shared<pcp::PkgInfoParcelable>(uid,
-          std::vector<package_x*>{mfx},
-          pkgmgr_common::PkgWriteType::Update, false);
+          std::vector<std::shared_ptr<package_x>>(1,
+              std::shared_ptr<package_x>(mfx, [] (package_x*) -> void {})),
+              pkgmgr_common::PkgWriteType::Update, false);
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
       pkgmgr_common::ReqType::SET_PKG_INFO);
@@ -839,8 +841,9 @@ extern "C" EXPORT_API int _parser_delete_manifest_info(
     manifest_x* mfx, uid_t uid) {
   auto parcelable =
       std::make_shared<pcp::PkgInfoParcelable>(uid,
-          std::vector<package_x*>{mfx},
-          pkgmgr_common::PkgWriteType::Delete, false);
+          std::vector<std::shared_ptr<package_x>>(1,
+              std::shared_ptr<package_x>(mfx, [] (package_x*) -> void {})),
+              pkgmgr_common::PkgWriteType::Delete, false);
 
   pkgmgr_client::PkgInfoClient client(parcelable, uid,
       pkgmgr_common::ReqType::SET_PKG_INFO);
@@ -914,7 +917,7 @@ extern "C" EXPORT_API int _pkginfo_delete_certinfo(const char* pkgid) {
           pkgmgr_common::DBOperationType::OPERATION_TYPE_WRITE));
 
   pkgmgr_client::PkgInfoClient client(parcelable, 0,
-                                      pkgmgr_common::ReqType::QUERY);
+                                      pkgmgr_common::ReqType::WRITE_QUERY);
   if (!client.SendRequest())
     return PMINFO_R_ERROR;
 
@@ -922,11 +925,12 @@ extern "C" EXPORT_API int _pkginfo_delete_certinfo(const char* pkgid) {
       client.GetResultParcel(), pcp::ParcelableType::Result);
 }
 
-extern "C" EXPORT_API int _parser_clear_cache_memory_db(uid_t uid) {
+extern "C" EXPORT_API int _parser_update_pending_cache(const char* pkgid) {
   std::shared_ptr<pcp::AbstractParcelable> parcelable(
-      new pcp::CommandParcelable(uid, CommandType::RemoveCache));
+      new pcp::CommandParcelable(_getuid(),
+          CommandType::UpdatePendingCache, { pkgid }));
 
-  pkgmgr_client::PkgInfoClient client(parcelable, uid,
+  pkgmgr_client::PkgInfoClient client(parcelable, _getuid(),
                                       pkgmgr_common::ReqType::COMMAND);
 
   if (!client.SendRequest())