From 7332ff71b0fc7f98fe90a8ffc5ed85c596e7052c Mon Sep 17 00:00:00 2001 From: chengyj1985 Date: Thu, 26 Dec 2019 18:07:28 +0800 Subject: [PATCH] load and unload libmediaservice function once Change-Id: I8e44c5d500f948268606a2a52accd9d50112ad41 --- src/common/media-common-system.c | 15 ++------ src/server/include/media-server-device-block.h | 2 +- src/server/media-server-db-manage.c | 10 ------ src/server/media-server-device-block.c | 50 +------------------------- src/server/media-server-main.c | 35 +++++------------- src/server/media-server-socket.c | 17 ++------- 6 files changed, 17 insertions(+), 112 deletions(-) diff --git a/src/common/media-common-system.c b/src/common/media-common-system.c index 493be1b..3d8e6a4 100644 --- a/src/common/media-common-system.c +++ b/src/common/media-common-system.c @@ -342,7 +342,7 @@ static int __ms_gdbus_method_sync(const char *dest, const char *path, const char #ifdef _USE_DEVICED_DBUS int ms_sys_get_device_list(ms_stg_type_e stg_type, GArray **dev_list) { - int ret; + int ret = MS_MEDIA_ERR_NONE; const char *dev_params[MS_STG_TYPE_MAX] = { BLOCK_DEVICE_USB, BLOCK_DEVICE_MMC, BLOCK_DEVICE_ALL, @@ -364,7 +364,6 @@ int ms_sys_get_device_list(ms_stg_type_e stg_type, GArray **dev_list) #else int ms_sys_get_device_list(ms_stg_type_e stg_type, GArray **dev_list) { - int ret = MS_MEDIA_ERR_NONE; int i = 0; int count = 0; int err = 0; @@ -372,12 +371,6 @@ int ms_sys_get_device_list(ms_stg_type_e stg_type, GArray **dev_list) usb_device_h device; char *mount_path = NULL; - ret = ms_load_functions(); - if (ret != MS_MEDIA_ERR_NONE) { - MS_DBG_ERR("ms_load_functions failed [%d]", ret); - return ret; - } - err = usb_device_get_device_list(USB_MASS_STORAGE, &list); if (err == 0) { count = usb_device_list_get_count(list); @@ -423,12 +416,10 @@ int ms_sys_get_device_list(ms_stg_type_e stg_type, GArray **dev_list) usb_device_free_device_list(list); } else { MS_DBG_ERR("usb_device_get_device_list falied [%d]", err); - ret = MS_MEDIA_ERR_INTERNAL; + return MS_MEDIA_ERR_INTERNAL; } - ms_unload_functions(); - - return ret; + return MS_MEDIA_ERR_NONE; } #endif diff --git a/src/server/include/media-server-device-block.h b/src/server/include/media-server-device-block.h index ba4559f..1dc47fb 100755 --- a/src/server/include/media-server-device-block.h +++ b/src/server/include/media-server-device-block.h @@ -24,7 +24,7 @@ #include "media-common-system.h" int ms_storage_insert_handler(const char *mount_path, const char *mount_uuid); -int ms_storage_remove_handler(const char *mount_path, const char *mount_uuid); +void ms_storage_remove_handler(const char *mount_path, const char *mount_uuid); #ifdef _USE_DEVICED_DBUS void ms_device_block_changed_cb(ms_block_info_s *block_info, void *user_data); #else diff --git a/src/server/media-server-db-manage.c b/src/server/media-server-db-manage.c index 2443a0a..3d53d0d 100755 --- a/src/server/media-server-db-manage.c +++ b/src/server/media-server-db-manage.c @@ -74,18 +74,11 @@ int ms_reset_mediadb(uid_t uid) static int __ms_remake_mediadb(uid_t uid) { - int err = MS_MEDIA_ERR_NONE; sqlite3 *handle = NULL; MS_DBG_ERR("THE SIZE OF MEDIA DB REACH THE LIMIT. RESET MEDIA DB."); /*write read schema*/ - /*load functions from plusin(s)*/ - err = ms_load_functions(); - if (err != MS_MEDIA_ERR_NONE) { - MS_DBG_ERR("function load failed [%d]", err); - return err; - } #ifdef _USE_TVPD_MODE ms_config_set_int(MS_DB_RESET, 1); #endif @@ -102,9 +95,6 @@ static int __ms_remake_mediadb(uid_t uid) /*disconnect form media db*/ if (handle) ms_disconnect_db(handle); - /*unload functions*/ - ms_unload_functions(); - #ifdef _USE_TVPD_MODE ms_config_set_int(MS_DB_RESET, 0); #endif diff --git a/src/server/media-server-device-block.c b/src/server/media-server-device-block.c index 6201f5e..53e0ea6 100644 --- a/src/server/media-server-device-block.c +++ b/src/server/media-server-device-block.c @@ -67,12 +67,6 @@ int ms_storage_insert_handler(const char *mount_path, const char *mount_uuid) uid_t uid = MEDIA_DEFAULT_UID; ms_dir_scan_type_t scan_type = MS_SCAN_ALL; - ret = ms_load_functions(); - if (ret != MS_MEDIA_ERR_NONE) { - MS_DBG_ERR("ms_load_functions failed [%d]", ret); - return ret; - } - ms_sys_get_uid(&uid); ms_connect_db(&handle, uid); @@ -130,49 +124,29 @@ ERROR: ms_disconnect_db(handle); - ms_unload_functions(); - return ret; } -int ms_storage_remove_handler(const char *mount_path, const char *mount_uuid) +void ms_storage_remove_handler(const char *mount_path, const char *mount_uuid) { - int ret = MS_MEDIA_ERR_NONE; sqlite3 *handle = NULL; uid_t uid = MEDIA_DEFAULT_UID; if (mount_path != NULL && mount_uuid != NULL) { - ret = ms_load_functions(); - if (ret != MS_MEDIA_ERR_NONE) { - MS_DBG_ERR("ms_load_functions failed [%d]", ret); - return ret; - } - ms_sys_get_uid(&uid); ms_connect_db(&handle, uid); ms_set_storage_validity(handle, mount_uuid, 0, uid); ms_send_storage_otg_scan_request(mount_path, mount_uuid, MS_SCAN_INVALID, uid); ms_disconnect_db(handle); - - ms_unload_functions(); } else if (mount_path != NULL && g_strcmp0(mount_path, STORAGE_REMOVED) == 0) { - ret = ms_load_functions(); - if (ret != MS_MEDIA_ERR_NONE) { - MS_DBG_ERR("ms_load_functions failed [%d]", ret); - return ret; - } - ms_sys_get_uid(&uid); ms_connect_db(&handle, uid); ms_set_all_storage_validity(handle, 0, uid); ms_disconnect_db(handle); - - ms_unload_functions(); } - return ret; } #ifdef _USE_DEVICED_DBUS @@ -201,12 +175,6 @@ static void __ms_usb_add_event(const char *mount_path) ms_dir_scan_type_t scan_type = MS_SCAN_ALL; uid_t uid = MEDIA_DEFAULT_UID; - ret = ms_load_functions(); - if (ret != MS_MEDIA_ERR_NONE) { - MS_DBG_ERR("ms_load_functions failed [%d]", ret); - return; - } - ms_connect_db(&handle, uid); if (mount_path != NULL) { @@ -257,8 +225,6 @@ ERROR: ms_disconnect_db(handle); - ms_unload_functions(); - return; } @@ -270,11 +236,6 @@ static void __ms_usb_remove_event(const char *mount_path) uid_t uid = MEDIA_DEFAULT_UID; if (mount_path != NULL) { - ret = ms_load_functions(); - if (ret != MS_MEDIA_ERR_NONE) { - MS_DBG_ERR("ms_load_functions failed [%d]", ret); - return; - } ms_connect_db(&handle, uid); @@ -306,8 +267,6 @@ static void __ms_usb_remove_event(const char *mount_path) } ms_disconnect_db(handle); - - ms_unload_functions(); } return; @@ -420,13 +379,6 @@ int ms_check_mounted_storage(uid_t uid) sqlite3 *handle = NULL; int err; - /*load functions from plusin(s)*/ - err = ms_load_functions(); - if (err != MS_MEDIA_ERR_NONE) { - MS_DBG_ERR("function load failed [%d]", err); - return ret; - } - ms_connect_db(&handle, uid); ret = __ms_check_mounted_storage_list(&added_list); diff --git a/src/server/media-server-main.c b/src/server/media-server-main.c index 877c18d..4522bc3 100644 --- a/src/server/media-server-main.c +++ b/src/server/media-server-main.c @@ -170,12 +170,6 @@ void _ms_datadisc_vconf_cb(void *data) if (strcmp(disc_type, valid_type) == 0) { ms_config_get_int(MS_DISC_STATE, &disc_state); - ret = ms_load_functions(); - if (ret != MS_MEDIA_ERR_NONE) { - MS_DBG_ERR("ms_load_functions failed [%d]", ret); - return; - } - /* request scanning */ ms_sys_get_uid(&uid); @@ -231,8 +225,6 @@ void _ms_datadisc_vconf_cb(void *data) } ms_disconnect_db(handle); - - ms_unload_functions(); } END: @@ -401,6 +393,13 @@ int main(int argc, char **argv) GIOChannel *channel = NULL; bool is_dcm_supported = __ms_is_dcm_supported(); power_off = false; + int ret = 0; + + ret = ms_load_functions(); + if (ret != MS_MEDIA_ERR_NONE) { + MS_DBG_ERR("ms_load_functions failed [%d]", ret); + return -1; + } #ifdef _USE_TVPD_MODE uid_t uid = MEDIA_DEFAULT_UID; @@ -432,6 +431,7 @@ int main(int argc, char **argv) __ms_new_global_variable(); if (ms_cynara_initialize() != MS_MEDIA_ERR_NONE) { + ms_unload_functions(); MS_DBG_ERR("Failed to initialize cynara"); return -1; } @@ -480,6 +480,7 @@ int main(int argc, char **argv) g_thread_join(dcm_thread); ms_cynara_finish(); + ms_unload_functions(); __ms_free_global_variable(); @@ -669,12 +670,6 @@ static int __ms_check_disc_status(void) memset(mnt_path, 0x0, sizeof(mnt_path)); SAFE_STRLCPY(mnt_path, disc_path, sizeof(mnt_path)); - ret = ms_load_functions(); - if (ret != MS_MEDIA_ERR_NONE) { - MS_DBG_ERR("ms_load_functions failed [%d]", ret); - goto END; - } - /* request scanning */ ms_sys_get_uid(&uid); @@ -702,7 +697,6 @@ static int __ms_check_disc_status(void) ret = ms_insert_storage(handle, DATADISC_STORAGE_ID, mnt_path, uid); if (ret != MS_MEDIA_ERR_NONE) { MS_DBG_ERR("ms_insert_storage failed"); - ms_unload_functions(); goto END; } } @@ -710,8 +704,6 @@ static int __ms_check_disc_status(void) ms_send_storage_scan_request(mnt_path, DATADISC_STORAGE_ID, scan_type, uid); ms_disconnect_db(handle); - - ms_unload_functions(); } } @@ -732,18 +724,11 @@ static void __ms_check_mediadb(void) sqlite3 *db_handle = NULL; int ret = MS_MEDIA_ERR_NONE; - ret = ms_load_functions(); - if (ret != MS_MEDIA_ERR_NONE) { - MS_DBG_ERR("ms_load_functions failed [%d]", ret); - return; - } - ms_sys_get_uid(&uid); ret = ms_connect_db(&db_handle, uid); if (ret != MS_MEDIA_ERR_NONE) { MS_DBG_ERR("ms_connect_db failed [%d]", ret); - ms_unload_functions(); return; } @@ -751,7 +736,6 @@ static void __ms_check_mediadb(void) if (ret != MS_MEDIA_ERR_NONE) { MS_DBG_ERR("ms_check_db_upgrade failed [%d]", ret); ms_disconnect_db(db_handle); - ms_unload_functions(); return; } @@ -776,7 +760,6 @@ static void __ms_check_mediadb(void) #endif ms_disconnect_db(db_handle); - ms_unload_functions(); #endif /* update external storage */ diff --git a/src/server/media-server-socket.c b/src/server/media-server-socket.c index ecac267..0a6f6c8 100644 --- a/src/server/media-server-socket.c +++ b/src/server/media-server-socket.c @@ -166,9 +166,8 @@ static int __ms_send_result_to_client(int pid, ms_comm_msg_s *recv_msg) return MS_MEDIA_ERR_NONE; } -static int __ms_recovery_media_db(uid_t uid) +static void __ms_recovery_media_db(uid_t uid) { - int err = MS_MEDIA_ERR_NONE; sqlite3 *handle = NULL; /* stop the child process */ @@ -181,13 +180,6 @@ static int __ms_recovery_media_db(uid_t uid) ms_reset_mediadb(uid); /*write read schema*/ - /*load functions from plugin(s)*/ - err = ms_load_functions(); - if (err != MS_MEDIA_ERR_NONE) { - MS_DBG_ERR("function load failed [%d]", err); - return err; - } - ms_connect_db(&handle, uid); MS_DBG_WARN("START WRITE SCHEMA"); @@ -199,14 +191,11 @@ static int __ms_recovery_media_db(uid_t uid) /*disconnect form media db*/ if (handle) ms_disconnect_db(handle); - /*unload functions*/ - ms_unload_functions(); - #ifdef _USE_TVPD_MODE ms_check_mounted_storage(uid); ms_config_set_int(MS_DB_RESET, 0); #endif - return MS_MEDIA_ERR_NONE; + } gboolean ms_read_socket(GIOChannel *src, GIOCondition condition, gpointer user_data) @@ -260,7 +249,7 @@ gboolean ms_read_socket(GIOChannel *src, GIOCondition condition, gpointer user_d break; case MS_MSG_MEDIA_DB_MALFORMED: /*media DB is corrupted, recovery media DB*/ - ret = __ms_recovery_media_db(recv_msg.uid); + __ms_recovery_media_db(recv_msg.uid); goto ERROR; default: close(client_sock); -- 2.7.4