Add media db open options 30/46530/4 accepted/tizen/mobile/20150822.064739 accepted/tizen/tv/20150822.065347 accepted/tizen/wearable/20150822.065921 submit/tizen/20150821.141221 submit/tizen/20150822.042819
authorMinje Ahn <minje.ahn@samsung.com>
Fri, 21 Aug 2015 10:23:50 +0000 (19:23 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Fri, 21 Aug 2015 13:25:18 +0000 (22:25 +0900)
Change-Id: I282a58cdb0dcdf899897c53fc1c59edd81aa3164
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
configure.ac
lib/include/media-util-db.h
lib/media-util-db.c
packaging/media-server.manifest
packaging/media-server.spec
src/mediadb-update.c
src/server/media-server-socket.c

index 9b0d5a6..fbb2da2 100755 (executable)
@@ -113,7 +113,7 @@ AC_SUBST(CYNARA_CREDS_SOCKET_LIBS)
 #cynara-session
 PKG_CHECK_MODULES(CYNARA_SESSION, cynara-session)
 AC_SUBST(CYNARA_SESSION_CFLAGS)
-AC_SUBST(CYNARA_SESSION_CFLAGS)
+AC_SUBST(CYNARA_SESSION_LIBS)
 
 #ticker noti library
 PKG_CHECK_MODULES(STATUS, notification)
index 27f1dd6..eeb720f 100755 (executable)
 extern "C" {
 #endif
 
+#include <stdbool.h>
+
 typedef void MediaDBHandle;            /**< Handle */
 
-int media_db_connect(MediaDBHandle **handle, uid_t uid);
+int media_db_connect(MediaDBHandle **handle, uid_t uid, bool needWrite);
 
 int media_db_disconnect(MediaDBHandle *handle);
 
index 988d1ab..38fc545 100755 (executable)
@@ -40,7 +40,7 @@ static __thread char **sql_list = NULL;
 static __thread int g_list_idx = 0;
 
 static int __media_db_busy_handler(void *pData, int count);
-static int __media_db_connect_db_with_handle(sqlite3 **db_handle, uid_t uid);
+static int __media_db_connect_db_with_handle(sqlite3 **db_handle, uid_t uid, bool needWrite);
 static int __media_db_disconnect_db_with_handle(sqlite3 *db_handle);
 
 static void __media_db_destroy_sql_list()
@@ -100,15 +100,17 @@ static char* __media_get_media_DB(uid_t uid)
        return result_psswd;
 }
 
-static int __media_db_connect_db_with_handle(sqlite3 **db_handle,uid_t uid)
+static int __media_db_connect_db_with_handle(sqlite3 **db_handle,uid_t uid, bool needWrite)
 {
-       int ret = MS_MEDIA_ERR_NONE;
+       int ret = SQLITE_OK;
 
        /*Connect DB*/
-       ret = db_util_open(__media_get_media_DB(uid), db_handle, DB_UTIL_REGISTER_HOOK_METHOD);
-
+       if (needWrite) {
+               ret = db_util_open_with_options(__media_get_media_DB(uid), db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
+       } else {
+               ret = db_util_open_with_options(__media_get_media_DB(uid), db_handle, SQLITE_OPEN_READONLY, NULL);
+       }
        if (SQLITE_OK != ret) {
-
                MSAPI_DBG_ERR("error when db open [%s]", __media_get_media_DB(uid));
                *db_handle = NULL;
                return MS_MEDIA_ERR_DB_CONNECT_FAIL;
@@ -128,7 +130,7 @@ static int __media_db_connect_db_with_handle(sqlite3 **db_handle,uid_t uid)
                        MSAPI_DBG_ERR("[error when register busy handler] %s\n", sqlite3_errmsg(*db_handle));
                }
 
-               db_util_close(*db_handle);
+               sqlite3_close(*db_handle);
                *db_handle = NULL;
 
                return MS_MEDIA_ERR_DB_CONNECT_FAIL;
@@ -400,14 +402,14 @@ static int _media_db_update_directly(sqlite3 *db_handle, const char *sql_str)
        return ret;
 }
 
-int media_db_connect(MediaDBHandle **handle, uid_t uid)
+int media_db_connect(MediaDBHandle **handle, uid_t uid, bool needWrite)
 {
        int ret = MS_MEDIA_ERR_NONE;
        sqlite3 * db_handle = NULL;
 
        MSAPI_DBG_FUNC();
 
-       ret = __media_db_connect_db_with_handle(&db_handle,uid);
+       ret = __media_db_connect_db_with_handle(&db_handle,uid, needWrite);
        MSAPI_RETV_IF(ret != MS_MEDIA_ERR_NONE, ret);
 
        *handle = db_handle;
index c00c25b..b5ce76d 100644 (file)
@@ -2,4 +2,7 @@
         <request>
                 <domain name="_" />
         </request>
+       <assign>
+               <filesystem path="/usr/bin/mediadb-update" exec_label="System" />
+       </assign>
 </manifest>
index b7b5f17..d952fd1 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       media-server
 Summary:    File manager service server.
-Version:    0.2.57
+Version:    0.2.58
 Release:    0
 Group:      Multimedia/Service
 License:    Apache-2.0
index f062208..dbae740 100644 (file)
@@ -34,7 +34,6 @@
 #include <tzplatform_config.h>
 
 GMainLoop * mainloop = NULL;
-static MediaDBHandle *db_handle = NULL;
 
 int (*svc_connect)                             (void ** handle, uid_t uid, char ** err_msg);
 int (*svc_disconnect)                  (void * handle, char ** err_msg);
@@ -101,23 +100,11 @@ void check_media_db(void)
 
 int dir_scan_non_recursive(char *path)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       ret = media_db_connect(&db_handle,tzplatform_getuid(TZ_USER_NAME));
-       if(ret != MS_MEDIA_ERR_NONE){
-               printf("Error connect DB failed\n");
-               return MS_MEDIA_ERR_DB_CONNECT_FAIL;
-       }
        return media_directory_scanning_async(path, FALSE, callback, NULL, tzplatform_getuid(TZ_USER_NAME));
 }
 
 int dir_scan_recursive(char *path)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       ret = media_db_connect(&db_handle,tzplatform_getuid(TZ_USER_NAME));
-       if(ret != MS_MEDIA_ERR_NONE){
-               printf("Error connect DB failed\n");
-               return MS_MEDIA_ERR_DB_CONNECT_FAIL;
-       }
        return media_directory_scanning_async(path, TRUE, callback, NULL, tzplatform_getuid(TZ_USER_NAME));
 }
 
index 807f167..78db07e 100755 (executable)
@@ -490,7 +490,7 @@ gboolean ms_read_db_tcp_socket(GIOChannel *src, GIOCondition condition, gpointer
        MS_SAFE_FREE(creds.smack);
        MS_SAFE_FREE(creds.uid);
 
-       if(media_db_connect(&db_handle, recv_msg.uid) != MS_MEDIA_ERR_NONE) {
+       if(media_db_connect(&db_handle, recv_msg.uid, TRUE) != MS_MEDIA_ERR_NONE) {
                MS_DBG_ERR("Failed to connect DB");
                goto ERROR;
        }
@@ -553,7 +553,7 @@ void _ms_process_tcp_message(gpointer data,  gpointer user_data)
 
                /* Connect Media DB*/
                if(db_handle == NULL) {
-                       if(media_db_connect(&db_handle, recv_msg.uid) != MS_MEDIA_ERR_NONE) {
+                       if(media_db_connect(&db_handle, recv_msg.uid, TRUE) != MS_MEDIA_ERR_NONE) {
                                MS_DBG_ERR("Failed to connect DB");
                                send_msg = MS_MEDIA_ERR_DB_CONNECT_FAIL;
                                goto ERROR;