From: youngman Date: Wed, 9 Mar 2016 22:59:55 +0000 (+0900) Subject: Call OCInit() when iotcon_connect() is called X-Git-Tag: submit/tizen/20160314.074213~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=10da63c35ceecf70b67f8f3277462ca2632d12fc;p=platform%2Fcore%2Fiot%2Fiotcon.git Call OCInit() when iotcon_connect() is called Change-Id: I1d413a4a862f9c6d35788f9c0c9c564087666e79 Signed-off-by: youngman --- diff --git a/daemon/icd-dbus.c b/daemon/icd-dbus.c index b7868ee..0654c30 100644 --- a/daemon/icd-dbus.c +++ b/daemon/icd-dbus.c @@ -651,6 +651,13 @@ static gboolean _dbus_handle_initialize(icDbus *object, const gchar *sender; icd_dbus_client_s *client = NULL; + ret = icd_initialize(); + if (IOTCON_ERROR_NONE != ret) { + ERR("icd_initialize() Fail(%d)", ret); + ic_dbus_complete_initialize(object, invocation, ret); + return TRUE; + } + sender = g_dbus_method_invocation_get_sender(invocation); g_mutex_lock(&icd_dbus_client_list_mutex); diff --git a/daemon/icd-ioty.c b/daemon/icd-ioty.c index c74003d..7d94c84 100644 --- a/daemon/icd-ioty.c +++ b/daemon/icd-ioty.c @@ -64,7 +64,7 @@ void icd_ioty_csdk_unlock() } -GThread* icd_ioty_init(const char *addr, unsigned short port) +int icd_ioty_init(const char *addr, unsigned short port, GThread **out_thread) { FN_CALL; GError *error; @@ -73,7 +73,7 @@ GThread* icd_ioty_init(const char *addr, unsigned short port) OCStackResult result = OCInit(addr, port, OC_CLIENT_SERVER); if (OC_STACK_OK != result) { ERR("OCInit() Fail(%d)", result); - return NULL; + return icd_ioty_convert_error(result); } DBG("OCInit() Success"); @@ -83,10 +83,12 @@ GThread* icd_ioty_init(const char *addr, unsigned short port) if (NULL == thread) { ERR("g_thread_try_new() Fail(%s)", error->message); g_error_free(error); - return NULL; + return IOTCON_ERROR_SYSTEM; } - return thread; + *out_thread = thread; + + return IOTCON_ERROR_NONE; } diff --git a/daemon/icd-ioty.h b/daemon/icd-ioty.h index 983f4ed..7315e23 100644 --- a/daemon/icd-ioty.h +++ b/daemon/icd-ioty.h @@ -81,7 +81,7 @@ void icd_ioty_csdk_lock(); void icd_ioty_csdk_unlock(); -GThread* icd_ioty_init(const char *addr, unsigned short port); +int icd_ioty_init(const char *addr, unsigned short port, GThread **out_thread); void icd_ioty_deinit(GThread *thread); diff --git a/daemon/icd.c b/daemon/icd.c index 87c1702..ac484ee 100644 --- a/daemon/icd.c +++ b/daemon/icd.c @@ -26,8 +26,10 @@ #define ICD_RANDOM_PORT 0 #define ICD_KILL_TIMEOUT_DURATION 10 +static GThread *icd_thread; static GMainLoop *icd_loop; static int icd_kill_timeout; +static int icd_connection; void icd_unset_kill_timeout() { @@ -55,54 +57,69 @@ void icd_set_kill_timeout() icd_kill_timeout = g_timeout_add_seconds(ICD_KILL_TIMEOUT_DURATION, _icd_kill_cb, NULL); } -int main(int argc, char **argv) + +int icd_initialize() { int ret; - guint id; - GThread *thread; - -#if !GLIB_CHECK_VERSION(2, 35, 0) - g_type_init(); -#endif - icd_loop = g_main_loop_new(NULL, FALSE); + if (true == icd_connection) + return IOTCON_ERROR_NONE; - id = icd_dbus_init(); - thread = icd_ioty_init(ICD_ALL_INTERFACES, ICD_RANDOM_PORT); - if (NULL == thread) { - ERR("icd_ioty_init() Fail"); - icd_dbus_deinit(id); - return -1; + ret = icd_ioty_init(ICD_ALL_INTERFACES, ICD_RANDOM_PORT, &icd_thread); + if (IOTCON_ERROR_NONE != ret) { + ERR("icd_ioty_init() Fail(%d)", ret); + return ret; } ret = icd_ioty_set_device_info(); if (IOTCON_ERROR_NONE != ret) { ERR("icd_ioty_set_device_info() Fail(%d)", ret); - icd_ioty_deinit(thread); - icd_dbus_deinit(id); - return -1; + icd_ioty_deinit(icd_thread); + return ret; } ret = icd_ioty_set_platform_info(); if (IOTCON_ERROR_NONE != ret) { ERR("icd_ioty_set_platform_info() Fail(%d)", ret); - icd_ioty_deinit(thread); - icd_dbus_deinit(id); - return -1; + icd_ioty_deinit(icd_thread); + return ret; } + icd_connection = true; + + return IOTCON_ERROR_NONE; +} + + +int main(int argc, char **argv) +{ + int ret; + guint id; + +#if !GLIB_CHECK_VERSION(2, 35, 0) + g_type_init(); +#endif + + icd_loop = g_main_loop_new(NULL, FALSE); + + id = icd_dbus_init(); + ret = icd_cynara_init(); if (IOTCON_ERROR_NONE != ret) { ERR("icd_cynara_init() Fail(%d)", ret); - icd_ioty_deinit(thread); icd_dbus_deinit(id); + return ret; } icd_set_kill_timeout(); g_main_loop_run(icd_loop); + if (true == icd_connection) { + icd_ioty_deinit(icd_thread); + icd_connection = false; + } + icd_cynara_deinit(); - icd_ioty_deinit(thread); icd_dbus_deinit(id); g_main_loop_unref(icd_loop); diff --git a/daemon/icd.h b/daemon/icd.h index f524813..9d6a24d 100644 --- a/daemon/icd.h +++ b/daemon/icd.h @@ -24,4 +24,6 @@ void icd_unset_kill_timeout(); void icd_set_kill_timeout(); +int icd_initialize(); + #endif /*__IOT_CONNECTIVITY_MANAGER_DAEMON_H__*/