Use a more specific database handle name instead of using 'database', since this
may conflict with other global variables from external libraries by accident
Change-Id: If1cca3013dc8558d80722f3582c416243a4e41df
Signed-off-by: Abhay Agarwal <ay.agarwal@samsung.com>
Name: ua-manager
Summary: User awareness manager
-Version: 0.11.2
+Version: 0.11.3
Release: 1
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
#endif
#define SQLITE_BUSY_TIMEOUT 500000
+#define SQLITE_MAX_RETRY 10
/* Helper macros */
#define EXEC(error_code, command, handle_error) do { \
/* INSERT statements */
static sqlite3_stmt *insert_ibeacon_adv;
-extern sqlite3 *database;
+extern sqlite3 *database_handle;
static int max_ibeacon_id;
static void __uam_adv_finalize_delete(void)
case SQLITE_ERROR:
default:
UAM_ERR("Failed to select max ibeacon adv [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
{
FUNC_ENTRY;
- retv_if(NULL == database, UAM_ERROR_NONE);
+ retv_if(NULL == database_handle, UAM_ERROR_NONE);
__uam_adv_table_info_finalize();
- sqlite3_close(database);
+ sqlite3_close(database_handle);
FUNC_EXIT;
return UAM_ERROR_NONE;
{
FUNC_ENTRY;
- EXEC(UAM_ERROR_NONE, __uam_adv_table_info_prepare(database), handle_error);
+ EXEC(UAM_ERROR_NONE, __uam_adv_table_info_prepare(database_handle), handle_error);
if (_uam_db_get_max_ibeacon_id() != UAM_ERROR_NONE)
goto handle_error;
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to insert ibeacon adv info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate ibeacon adv info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to delete adv data [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
#define VERSION 1
-sqlite3 *database;
+sqlite3 *database_handle;
static sqlite3_stmt *select_version;
static int __uam_db_exec_sql(char *sql, void *cb)
int sql_ret;
char *error = NULL;
- if (NULL == database) {
- UAM_ERR("database is NULL");
+ if (NULL == database_handle) {
+ UAM_ERR("database_handle is NULL");
return UAM_ERROR_DB_FAILED;
}
return UAM_ERROR_DB_FAILED;
}
- sql_ret = sqlite3_exec(database, sql, cb, NULL, &error);
+ sql_ret = sqlite3_exec(database_handle, sql, cb, NULL, &error);
if (SQLITE_OK != sql_ret) {
UAM_ERR("Failed to execute sql: (%d) %s", sql_ret, error);
sqlite3_free(error);
- sqlite3_close(database);
- database = NULL;
+ sqlite3_close(database_handle);
+ database_handle = NULL;
return UAM_ERROR_DB_FAILED;
}
FUNC_ENTRY;
int res = 0;
- res = sqlite3_open_v2(DATABASE_FULL_PATH, &(database),
+ res = sqlite3_open_v2(DATABASE_FULL_PATH, &(database_handle),
SQLITE_OPEN_FULLMUTEX | SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
if (SQLITE_OK != res) {
UAM_ERR("sqlite3_open_v2 failed, (%d)", res);
static int __uam_db_busy(void *data, int attempt)
{
FUNC_ENTRY;
- int* max_attempts;
+ int max_attempts = SQLITE_MAX_RETRY;
- max_attempts = (int*)data;
-
- if (attempt < *max_attempts) {
+ if (attempt < max_attempts) {
UAM_WARN("DB locked, attempt number %d, Attempt Remaining %d",
- attempt, *max_attempts - attempt);
+ attempt, max_attempts - attempt);
usleep(SQLITE_BUSY_TIMEOUT); /* wait for a half second*/
return 1;
}
sql = sqlite3_mprintf("PRAGMA user_version");
sqlite3_stmt *stmt = select_version;
- sql_ret = sqlite3_prepare_v2(database, sql, -1, &stmt, NULL);
+ sql_ret = sqlite3_prepare_v2(database_handle, sql, -1, &stmt, NULL);
if (sql_ret != SQLITE_OK) {
stmt = NULL;
FINALIZE(select_version);
case SQLITE_ERROR:
default:
UAM_ERR("Failed to select database version info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
}
sqlite3_stmt *stmt = NULL;
- sql_ret = sqlite3_prepare_v2(database, sql, strlen(sql), &stmt, NULL);
+ sql_ret = sqlite3_prepare_v2(database_handle, sql, strlen(sql), &stmt, NULL);
if (SQLITE_OK != sql_ret) {
- UAM_ERR("sqlite3_prepare_v2 failed, [%d:%s]", sql_ret, sqlite3_errmsg(database));
+ UAM_ERR("sqlite3_prepare_v2 failed, [%d:%s]", sql_ret, sqlite3_errmsg(database_handle));
result = false;
goto is_table_existing_done;
}
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_ROW) {
- UAM_ERR("sqlite3_step failed, [%d:%s]", sql_ret, sqlite3_errmsg(database));
+ UAM_ERR("sqlite3_step failed, [%d:%s]", sql_ret, sqlite3_errmsg(database_handle));
result = false;
goto is_table_existing_done;
}
char *sql;
int ret= UAM_ERROR_NONE;
int max_retries = 2;
- int max_attempts = 10;
do {
/* open database */
if (UAM_ERROR_NONE != __uam_db_verify()) {
UAM_ERR("Failed to verify database");
- sqlite3_close(database);
+ sqlite3_close(database_handle);
unlink(DATABASE_FULL_PATH);
- database = NULL;
+ database_handle = NULL;
retv_if(0 == max_retries, UAM_ERROR_DB_FAILED);
} else {
break;
return UAM_ERROR_DB_FAILED;
}
- if (NULL == database) {
+ if (NULL == database_handle) {
unlink(DATABASE_FULL_PATH);
return UAM_ERROR_DB_FAILED;
}
/* Set how many times we'll repeat our attempts for sqlite_step */
- if (SQLITE_OK != sqlite3_busy_handler(database, __uam_db_busy, &max_attempts)) {
+ if (SQLITE_OK != sqlite3_busy_handler(database_handle, __uam_db_busy, NULL)) {
UAM_ERR("Couldn't set busy handler!");
return UAM_ERROR_DB_FAILED;
}
int _uam_db_initialize(void)
{
FUNC_ENTRY;
- database = NULL;
+ database_handle = NULL;
/* initialize database */
EXEC(UAM_ERROR_NONE, _uam_db_initialize_once(), handle_error);
{
FUNC_ENTRY;
- retv_if(NULL == database, UAM_ERROR_NONE);
+ retv_if(NULL == database_handle, UAM_ERROR_NONE);
_uam_user_db_deinitialize();
_uam_device_db_deinitialize();
/* INSERT statements */
static sqlite3_stmt *insert_device_info;
-extern sqlite3 *database;
+extern sqlite3 *database_handle;
static int max_device_number;
static void __uam_device_finalize_delete(void)
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
{
FUNC_ENTRY;
- retv_if(NULL == database, UAM_ERROR_NONE);
+ retv_if(NULL == database_handle, UAM_ERROR_NONE);
__uam_device_table_devicesinfo_finalize();
- sqlite3_close(database);
+ sqlite3_close(database_handle);
FUNC_EXIT;
return UAM_ERROR_NONE;
{
FUNC_ENTRY;
- EXEC(UAM_ERROR_NONE, __uam_device_table_devicesinfo_prepare(database), handle_error);
+ EXEC(UAM_ERROR_NONE, __uam_device_table_devicesinfo_prepare(database_handle), handle_error);
if (_uam_db_get_max_device_number() != UAM_ERROR_NONE)
goto handle_error;
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to update ip address [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to update presence [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to update device timestamp [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to update device discriminant [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to insert device info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to delete device info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
} else
UAM_DBG("Device info deleted");
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to select device info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
} else {
UAM_DBG("Device info found");
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to delete device data [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
/* UPDATE statements */
static sqlite3_stmt *update_device_service;
-extern sqlite3 *database;
+extern sqlite3 *database_handle;
static void __uam_device_service_finalize_delete(void)
{
{
FUNC_ENTRY;
- retv_if(NULL == database, UAM_ERROR_NONE);
+ retv_if(NULL == database_handle, UAM_ERROR_NONE);
__uam_device_service_table_devicesinfo_finalize();
- sqlite3_close(database);
+ sqlite3_close(database_handle);
FUNC_EXIT;
return UAM_ERROR_NONE;
{
FUNC_ENTRY;
- EXEC(UAM_ERROR_NONE, __uam_device_service_table_deviceservicesinfo_prepare(database),
+ EXEC(UAM_ERROR_NONE, __uam_device_service_table_deviceservicesinfo_prepare(database_handle),
handle_error);
FUNC_EXIT;
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to insert device-service info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to insert device-service info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to delete device data [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to delete device-service info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
} else
UAM_DBG("Device-service info deleted");
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to delete device-service info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
} else
UAM_DBG("Device-service info deleted");
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to delete device info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
} else
UAM_DBG("Device info deleted");
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
/* INSERT statements */
static sqlite3_stmt *insert_service_info;
-extern sqlite3 *database;
+extern sqlite3 *database_handle;
static int max_service_number;
static void __uam_service_finalize_delete(void)
case SQLITE_ERROR:
default:
UAM_ERR("Failed to select max service number [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
{
FUNC_ENTRY;
- retv_if(NULL == database, UAM_ERROR_NONE);
+ retv_if(NULL == database_handle, UAM_ERROR_NONE);
__uam_service_table_servicesinfo_finalize();
- sqlite3_close(database);
+ sqlite3_close(database_handle);
FUNC_EXIT;
return UAM_ERROR_NONE;
{
FUNC_ENTRY;
- EXEC(UAM_ERROR_NONE, __uam_service_table_servicesinfo_prepare(database), handle_error);
+ EXEC(UAM_ERROR_NONE, __uam_service_table_servicesinfo_prepare(database_handle), handle_error);
if (_uam_db_get_max_service_number() != UAM_ERROR_NONE)
goto handle_error;
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to insert service info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to delete service info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
} else
UAM_DBG("Service info deleted");
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to delete service data [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to update service timestamp [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
}
} while (sql_ret == SQLITE_ROW);
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate service info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
/* INSERT statements */
static sqlite3_stmt *insert_user_info;
-extern sqlite3 *database;
+extern sqlite3 *database_handle;
static int max_user_id;
static void __uam_finalize_delete(void)
case SQLITE_ERROR:
default:
UAM_ERR("Failed to select max user id [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
{
FUNC_ENTRY;
- EXEC(UAM_ERROR_NONE, __uam_table_usersinfo_prepare(database), handle_error);
+ EXEC(UAM_ERROR_NONE, __uam_table_usersinfo_prepare(database_handle), handle_error);
if (_uam_db_get_max_user_id() != UAM_ERROR_NONE)
goto handle_error;
{
FUNC_ENTRY;
- retv_if(NULL == database, UAM_ERROR_NONE);
+ retv_if(NULL == database_handle, UAM_ERROR_NONE);
__uam_table_usersinfo_finalize();
- sqlite3_close(database);
+ sqlite3_close(database_handle);
FUNC_EXIT;
return UAM_ERROR_NONE;
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to insert user info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to delete user info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
} else
UAM_DBG("User info deleted");
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to select user info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
} else {
info = g_new0(db_user_info_t, 1);
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate user info [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
}
} while (sql_ret == SQLITE_ROW);
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_ERR("Failed to delete user data [%d:%s]",
- sql_ret, sqlite3_errmsg(database));
+ sql_ret, sqlite3_errmsg(database_handle));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}