Support asynchronous plugin initializer
[platform/core/connectivity/zigbee-manager.git] / zigbee-daemon / src / main.c
index 05895ff..78639c3 100644 (file)
 /**< ZigBee Service */
 ZigBeeService *zigbee_service;
 
+static gboolean _request_terminate(gpointer user_data)
+{
+       NOTUSED(user_data);
+
+       zblib_service_exit(zigbee_service);
+
+       return G_SOURCE_REMOVE;
+}
+
 int main(int arg, char **argv)
 {
        ZigBeeService *service = NULL;
@@ -49,8 +58,6 @@ int main(int arg, char **argv)
        NOTUSED(arg);
        NOTUSED(argv);
 
-       Z_LOGI("service mainloop start");
-
        /* Create ZigBee service */
        zigbee_service = service = zblib_service_new();
 
@@ -65,10 +72,12 @@ int main(int arg, char **argv)
        ret = zigbee_service_init(service);
        if (G_UNLIKELY(FALSE == ret)) {
                Z_LOGE("zigbee_service_init failed!");
-               goto END;
+               /* Minimum mainloop time is required to notify the result */
+               g_timeout_add(100, _request_terminate, NULL);
        }
 
        /* Run ZigBee service */
+       Z_LOGI("service mainloop start");
        ret = zblib_service_run(service);
        if (G_UNLIKELY(FALSE == ret)) {
                Z_LOGE("Run service failed!");