Remove db-util dependency
[platform/core/telephony/tel-plugin-database.git] / src / database_main.c
index 707358d..9756a3d 100644 (file)
@@ -25,7 +25,8 @@
 #include <strings.h>
 
 #include <glib.h>
-#include <db-util.h>
+#include <sqlite3.h>
+#include <unistd.h>
 
 #include <tcore.h>
 #include <server.h>
@@ -92,14 +93,37 @@ static gboolean __update_query_database(Storage *strg, void *handle, const char
        return TRUE;
 }
 
+static int _busy_handler(void *pData, int count)
+{
+       if (5 - count > 0) {
+               dbg("Busy Handler Called! : CNT(%d)\n", count + 1);
+               usleep((count + 1) * 100000);
+               return 1;
+       } else {
+               dbg("Busy Handler will be returned SQLITE_BUSY error\n");
+               return 0;
+       }
+}
+
 static void *create_handle(Storage *strg, const char *path)
 {
        int rv = 0;
        sqlite3 *handle = NULL;
 
-       rv = db_util_open(path, &handle, 0);
+       if (path == NULL) {
+               err("Invalid input param error");
+               return NULL;
+       }
+
+       rv = sqlite3_open(path, &handle);
+       if (rv != SQLITE_OK) {
+               err("fail to connect database err(%d), errmsg(%s)", rv, sqlite3_errmsg(handle));
+               return NULL;
+       }
+
+       rv = sqlite3_busy_handler(handle, _busy_handler, NULL);
        if (rv != SQLITE_OK) {
-               err("fail to connect database err(%d)", rv);
+               err("fail to register busy handler err(%d), errmsg(%s)", rv, sqlite3_errmsg(handle));
                return NULL;
        }
 
@@ -114,7 +138,7 @@ static gboolean remove_handle(Storage *strg, void *handle)
        if (!handle)
                return FALSE;
 
-       rv = db_util_close(handle);
+       rv = sqlite3_close(handle);
        if (rv != SQLITE_OK) {
                err("fail to close database err(%d)", rv);
                handle = NULL;