void *user_data);
/**
- * @brief Called when the package is installed, uninstalled or updated, and the progress of the request to the package manager changes.
- * @since_tizen 3.0
- *
- * @param[in] target_uid The uid of the package event occured
- * @param[in] type The type of the package to be installed, uninstalled or updated
- * @param[in] package The name of the package to be installed, uninstalled or updated
- * @param[in] event_type The type of the request to the package manager
- * @param[in] event_state The current state of the request to the package manager
- * @param[in] progress The progress for the request that is being processed by the package manager \n
- * The range of progress is from @c 0 to @c 100.
- * @param[in] error The error code when the package manager failed to process the request
- * @param[in] user_data The user data passed from package_manager_set_event_cb()
- *
- * @see package_manager_set_global_event_cb()
- * @see package_manager_unset_global_event_cb()
- */
-typedef void (*package_manager_global_event_cb) (
- uid_t target_uid,
- const char *type,
- const char *package,
- package_manager_event_type_e event_type,
- package_manager_event_state_e event_state,
- int progress,
- package_manager_error_e error,
- void *user_data);
-
-/**
* @brief Creates a package manager handle.
* @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
* @privlevel public
int package_manager_unset_event_cb(package_manager_h manager);
/**
- * @brief Registers a callback function to be invoked when the package is installed, uninstalled or updated.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/packagemanager.info
- * @param[in] manager The package manager handle
- * @param[in] callback The callback function to be registered
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return @c 0 on success,
- * otherwise a negative error value
- *
- * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
- * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #PACKAGE_MANAGER_ERROR_PERMISSION_DENIED Permission denied
- * @post package_manager_global_event_cb() will be invoked.
- *
- * @see package_manager_set_event_status()
- * @see package_manager_global_event_cb()
- * @see package_manager_unset_global_event_cb()
- */
-int package_manager_set_global_event_cb(package_manager_h manager,
- package_manager_global_event_cb callback,
- void *user_data);
-
-/**
- * @brief Unregisters the callback function.
- * @since_tizen 3.0
- *
- * @param[in] manager The package manager handle
- *
- * @return @c 0 on success,
- * otherwise a negative error value
- *
- * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
- * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
- *
- * @see package_manager_global_event_cb()
- * @see package_manager_set_global_event_cb()
- */
-int package_manager_unset_global_event_cb(package_manager_h manager);
-
-/**
* @brief Called to retrieve all packages.
* @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
*
pkgmgr_mode mode;
event_info *head;
package_manager_event_cb event_cb;
- package_manager_global_event_cb global_event_cb;
- void *global_user_data;
void *user_data;
};
event_type,
PACKAGE_MANAGER_EVENT_STATE_STARTED,
0, PACKAGE_MANAGER_ERROR_NONE, manager->user_data);
- if (manager->global_event_cb)
- manager->global_event_cb(target_uid, pkg_type, pkg_name,
- event_type,
- PACKAGE_MANAGER_EVENT_STATE_STARTED,
- 0, PACKAGE_MANAGER_ERROR_NONE, manager->global_user_data);
-
} else if (strcasecmp(key, "install_percent") == 0
|| strcasecmp(key, "progress_percent") == 0) {
if (__find_event
atoi(val),
PACKAGE_MANAGER_ERROR_NONE,
manager->user_data);
- if (manager->global_event_cb)
- manager->global_event_cb(target_uid, pkg_type, pkg_name,
- event_type,
- PACKAGE_MANAGER_EVENT_STATE_PROCESSING,
- atoi(val),
- PACKAGE_MANAGER_ERROR_NONE,
- manager->global_user_data);
}
} else if (strcasecmp(key, "error") == 0) {
0,
PACKAGE_MANAGER_ERROR_NONE,
manager->user_data);
- if (manager->global_event_cb)
- manager->global_event_cb(target_uid, pkg_type,
- pkg_name, event_type,
- PACKAGE_MANAGER_EVENT_STATE_FAILED,
- 0,
- PACKAGE_MANAGER_ERROR_NONE,
- manager->global_user_data);
}
} else if (strcasecmp(key, "end") == 0) {
if (__find_event
100,
PACKAGE_MANAGER_ERROR_NONE,
manager->user_data);
- if (manager->global_event_cb)
- manager->global_event_cb(target_uid, pkg_type,
- pkg_name, event_type,
- PACKAGE_MANAGER_EVENT_STATE_COMPLETED,
- 100,
- PACKAGE_MANAGER_ERROR_NONE,
- manager->global_user_data);
}
} else {
if (strcasecmp(key, "ok") != 0) {
0,
PACKAGE_MANAGER_ERROR_NONE,
manager->user_data);
- if (manager->global_event_cb)
- manager->global_event_cb(target_uid, pkg_type,
- pkg_name, event_type,
- PACKAGE_MANAGER_EVENT_STATE_FAILED,
- 0,
- PACKAGE_MANAGER_ERROR_NONE,
- manager->global_user_data);
}
}
}
manager->event_cb = NULL;
manager->user_data = NULL;
- if (manager->global_event_cb == NULL) {
- retval = pkgmgr_client_remove_listen_status(manager->pc);
- if (retval == PKGMGR_R_EINVAL)
- return
- package_manager_error
- (PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__,
- NULL);
- else if (retval == PKGMGR_R_ERROR)
- return
- package_manager_error
- (PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__,
- NULL);
- }
-
- return PACKAGE_MANAGER_ERROR_NONE;
-}
-
-API int package_manager_set_global_event_cb(package_manager_h manager,
- package_manager_global_event_cb callback,
- void *user_data)
-{
-
- int retval;
- retval = check_privilege(PRIVILEGE_PACKAGE_MANAGER_INFO);
- if (retval != PACKAGE_MANAGER_ERROR_NONE)
- return retval;
-
- if (package_manager_validate_handle(manager)) {
+ retval = pkgmgr_client_remove_listen_status(manager->pc);
+ if (retval == PKGMGR_R_EINVAL)
return
- package_manager_error
- (PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__,
- NULL);
- }
-
- if (getuid() >= REGULAR_USER) {
- _LOGE("Regular user is not allowed for this api");
- return PACKAGE_MANAGER_ERROR_PERMISSION_DENIED;
- }
-
- manager->global_event_cb = callback;
- manager->global_user_data = user_data;
-
- pkgmgr_client_listen_status(manager->pc, global_event_handler, manager);
-
- return PACKAGE_MANAGER_ERROR_NONE;
-}
-
-API int package_manager_unset_global_event_cb(package_manager_h manager)
-{
- int retval;
-
- if (manager == NULL) {
+ package_manager_error
+ (PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__,
+ NULL);
+ else if (retval == PKGMGR_R_ERROR)
return
- package_manager_error
- (PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__,
- NULL);
- }
-
- manager->global_event_cb = NULL;
- manager->global_user_data = NULL;
-
- if (manager->event_cb == NULL) {
- retval = pkgmgr_client_remove_listen_status(manager->pc);
- if (retval == PKGMGR_R_EINVAL)
- return
- package_manager_error
- (PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__,
- NULL);
- else if (retval == PKGMGR_R_ERROR)
- return
- package_manager_error
- (PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__,
- NULL);
- }
+ package_manager_error
+ (PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__,
+ NULL);
return PACKAGE_MANAGER_ERROR_NONE;
}
#include <sys/types.h>
#include <fcntl.h>
-#include <glib.h>
-
#include <package_manager.h>
return PACKAGE_MANAGER_ERROR_NONE;
}
-static void _global_event_cb(uid_t target_uid, const char *type,
- const char *package, package_manager_event_type_e event_type,
- package_manager_event_state_e event_state, int progress,
- package_manager_error_e error, void *user_data)
-{
- fprintf(stderr, "uid[%u] type[%s] pkgid[%s] event_type[%d] "
- "event_state[%d] progress[%d] error[%d]\n",
- target_uid, type, package, event_type, event_state,
- progress, error);
-}
-
-static int _listen_event(void)
-{
- int ret;
- package_manager_h manager;
-
- ret = package_manager_create(&manager);
- if (ret != PACKAGE_MANAGER_ERROR_NONE)
- return ret;
-
- ret = package_manager_set_global_event_cb(manager, _global_event_cb,
- NULL);
- if (ret != PACKAGE_MANAGER_ERROR_NONE)
- return ret;
-
- return PACKAGE_MANAGER_ERROR_NONE;
-}
-
int main(int argc, char **argv)
{
- GMainLoop *loop;
int ret = PACKAGE_MANAGER_ERROR_NONE;
if (1 == argc) {
- if (_listen_event()) {
- fprintf(stderr, "Register event listener failed\n");
- return EXIT_FAILURE;
- }
+ fprintf(stderr, "mising operand\n");
+ return EXIT_FAILURE;
} else if (2 == argc) {
ret = _get_packageinfo(argv[1]);
} else if (3 == argc) {
return EXIT_FAILURE;
}
- if (1 == argc) {
- loop = g_main_loop_new(NULL, FALSE);
- g_main_loop_run(loop);
- }
-
return EXIT_SUCCESS;
}