Add new msg to check service launch status 91/249591/8
authorhj kim <backto.kim@samsung.com>
Tue, 15 Dec 2020 07:42:16 +0000 (16:42 +0900)
committerhj kim <backto.kim@samsung.com>
Tue, 15 Dec 2020 09:26:27 +0000 (18:26 +0900)
Change-Id: I9c7148c34e90e5537913b0507e849eaa30d3e2b4

packaging/capi-media-controller.spec
src/media_controller_ipc.c
svc/include/media_controller_socket.h
svc/media_controller_svc.c

index 43fd00b..69adc4d 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-controller
 Summary:    A media controller library in Tizen Native API
-Version:    0.2.22
+Version:    0.2.23
 Release:    1
 Group:      Multimedia/API
 License:    Apache-2.0
index 3ad7019..7a7d823 100644 (file)
@@ -467,34 +467,38 @@ static int __activate_service(void)
 
        return MEDIA_CONTROLLER_ERROR_NONE;
 }
-#endif
 
-int _mc_ipc_service_connect(mc_priv_type_e priv_type)
+static int __launch_service(mc_priv_type_e priv_type)
 {
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
-#ifdef _ON_DEMAND_SOCKET_ACTIVATION
        unsigned int retry_count = 0;
-#endif
 
-       ret = __make_service_connection(priv_type);
+       ret = _mc_ipc_send_message_to_server(MC_MSG_SERVICE_LAUNCH, priv_type, "launch");
        mc_retvm_if(ret == MEDIA_CONTROLLER_ERROR_NONE, ret, "service is already running!");
        mc_retvm_if(ret == MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED, ret, "Permission deny!");
 
-#ifdef _ON_DEMAND_SOCKET_ACTIVATION
        ret = __activate_service();
        mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Fail to __activate_service");
 
-       ret = __make_service_connection(priv_type);
-       mc_retvm_if(ret == MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED, ret, "Permission deny!");
-
-       /* Try to make connection until starting daemon is completed */
-       while ((ret != MEDIA_CONTROLLER_ERROR_NONE) && (retry_count++ < MAX_WAIT_COUNT)) {
+       while (retry_count++ < MAX_WAIT_COUNT) {
                MC_MILLISEC_SLEEP(200);
                mc_error("[No-Error] retry_count [%d]", retry_count);
-               ret = __make_service_connection(priv_type);
+               ret = _mc_ipc_send_message_to_server(MC_MSG_SERVICE_LAUNCH, priv_type, "launch");
+               mc_retvm_if(ret == MEDIA_CONTROLLER_ERROR_NONE, ret, "service is running!");
                mc_retvm_if(ret == MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED, ret, "Permission deny!");
        }
-#endif
 
        return ret;
 }
+#endif
+
+int _mc_ipc_service_connect(mc_priv_type_e priv_type)
+{
+#ifdef _ON_DEMAND_SOCKET_ACTIVATION
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       ret = __launch_service(priv_type);
+       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Fail to __launch_service");
+#endif
+
+       return __make_service_connection(priv_type);
+}
index 54dd088..da5b009 100755 (executable)
@@ -45,6 +45,7 @@ typedef enum {
        MC_MSG_CLIENT_GET,
        MC_MSG_SERVER_CONNECTION,
        MC_MSG_SERVER_DISCONNECTION,
+       MC_MSG_SERVICE_LAUNCH,
        MC_MSG_MAX,
 } mc_msg_type_e;
 
index 76e6b16..aeafc47 100644 (file)
@@ -653,6 +653,12 @@ static gboolean __mc_read_service_request_tcp_socket(GIOChannel *src, GIOConditi
                goto ERROR;
        }
 
+       if (req->req_msg->msg_type == MC_MSG_SERVICE_LAUNCH) {
+               mc_info("Media Controller Daemon is running");
+               msg = MEDIA_CONTROLLER_ERROR_NONE;
+               goto ERROR;
+       }
+
        if (g_queue_get_length(request_queue) >= MAX_MC_REQUEST) {
                mc_error("request_queue is limited until %d", MAX_MC_REQUEST);
                msg = MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;