Add pkgmgrinfo_pkginfo_foreach_depends_on_by_pkgid 93/301893/1
authorSangyoon Jang <jeremy.jang@samsung.com>
Mon, 27 Nov 2023 05:51:07 +0000 (14:51 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Mon, 27 Nov 2023 05:51:07 +0000 (14:51 +0900)
Add a new API to improve performance of .NET API.

Change-Id: Ia4b2f969c7839f0e010b418df8f8162a7d64fa13
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/pkgmgrinfo_pkginfo.c

index 4cf0cff..2c9bfb5 100644 (file)
@@ -1531,22 +1531,22 @@ static void __free_depends_on(gpointer data)
        pkgmgrinfo_basic_free_dependency(dep);
 }
 
-API int pkgmgrinfo_pkginfo_foreach_depends_on(pkgmgrinfo_pkginfo_h handle,
+/* This API is not exported at the header file */
+API int pkgmgrinfo_pkginfo_foreach_depends_on_by_pkgid(const char *pkgid,
                pkgmgrinfo_pkg_dependency_list_cb dependency_cb,
-               void *user_data)
+               void *user_data, uid_t uid)
 {
        int ret;
-       pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
        GList *pkg_list = NULL;
        GList *l;
        dependency_x *dep;
 
-       if (handle == NULL || dependency_cb == NULL || info->pkg_info == NULL) {
+       if (pkgid == NULL || dependency_cb == NULL) {
                LOGE("invalid parameter");
                return PMINFO_R_EINVAL;
        }
 
-       ret = _pkginfo_get_depends_on(info->uid, info->pkg_info->package, &pkg_list);
+       ret = _pkginfo_get_depends_on(uid, pkgid, &pkg_list);
        if (ret != PMINFO_R_OK)
                return PMINFO_R_ERROR;
 
@@ -1562,6 +1562,22 @@ API int pkgmgrinfo_pkginfo_foreach_depends_on(pkgmgrinfo_pkginfo_h handle,
        return PMINFO_R_OK;
 }
 
+API int pkgmgrinfo_pkginfo_foreach_depends_on(pkgmgrinfo_pkginfo_h handle,
+               pkgmgrinfo_pkg_dependency_list_cb dependency_cb,
+               void *user_data)
+{
+       pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
+
+       if (handle == NULL || dependency_cb == NULL || info->pkg_info == NULL) {
+               LOGE("invalid parameter");
+               return PMINFO_R_EINVAL;
+       }
+
+       return pkgmgrinfo_pkginfo_foreach_depends_on_by_pkgid(
+                        info->pkg_info->package, dependency_cb, user_data,
+                        info->uid);
+}
+
 API int pkgmgrinfo_pkginfo_foreach_res_allowed_package(
                pkgmgrinfo_pkginfo_h handle,
                pkgmgrinfo_res_allowed_package_list_cb res_allowed_package_cb,