From 2cc37548779a142104a0e813fa82c2fedf27cfe6 Mon Sep 17 00:00:00 2001 From: hjkim Date: Fri, 27 Dec 2024 14:10:08 +0900 Subject: [PATCH] Create a file to verify controller daemon has run create tmp/media_controller_launch and remain additional message when socket connection failed. Change-Id: I8b324119f9a2f944f7db85cea3f4a885af20fc27 --- packaging/capi-media-controller.spec | 2 +- svc/daemon/media_controller_main.c | 20 +++++++++++++++++++- svc/include/media_controller_svc.h | 2 ++ svc/media_controller_socket.c | 4 ++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packaging/capi-media-controller.spec b/packaging/capi-media-controller.spec index ba2b29b..8268605 100644 --- a/packaging/capi-media-controller.spec +++ b/packaging/capi-media-controller.spec @@ -1,6 +1,6 @@ Name: capi-media-controller Summary: A media controller library in Tizen Native API -Version: 1.0.8 +Version: 1.0.9 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/svc/daemon/media_controller_main.c b/svc/daemon/media_controller_main.c index 796206e..89ce1da 100644 --- a/svc/daemon/media_controller_main.c +++ b/svc/daemon/media_controller_main.c @@ -14,6 +14,9 @@ * limitations under the License. */ +#include +#include +#include #include #include "media_controller_private.h" @@ -28,7 +31,6 @@ static int g_mc_timer_id = 0; #define MC_MAIN_TIMEOUT_SEC_60 60 - static void __mc_main_create_timer(void); static gboolean __mc_main_check_connection(gpointer user_data) @@ -85,6 +87,19 @@ static int __mc_main_listen_socket(void) } } +static void __mc_main_create_daemon_launch_check_file(void) +{ + int fd; + + if ((fd = creat(LAUNCH_CHECK_FILE, 0644)) < 0) { + mc_stderror("failed to create file"); + return; + } + + mc_debug("[%s] is created", LAUNCH_CHECK_FILE); + close(fd); +} + int main(int argc, char **argv) { GThread *svc_thread = NULL; @@ -129,6 +144,7 @@ int main(int argc, char **argv) #else mc_debug("*** Media Controller Daemon is running [always] ***"); #endif + __mc_main_create_daemon_launch_check_file(); g_main_loop_run(g_mc_mainloop); @@ -141,6 +157,8 @@ int main(int argc, char **argv) #endif mc_cynara_finish(); + unlink(LAUNCH_CHECK_FILE); + /* close socket */ close(fd); diff --git a/svc/include/media_controller_svc.h b/svc/include/media_controller_svc.h index d931749..11d37c9 100644 --- a/svc/include/media_controller_svc.h +++ b/svc/include/media_controller_svc.h @@ -23,6 +23,8 @@ extern "C" { #endif /* __cplusplus */ +#define LAUNCH_CHECK_FILE tzplatform_mkpath(TZ_SYS_TMP, "media_controller_launch") + gpointer mc_svc_thread(void *data); GMainLoop *mc_svc_get_main_loop(void); int mc_svc_get_connection_cnt(void); diff --git a/svc/media_controller_socket.c b/svc/media_controller_socket.c index 758f577..3ca2942 100644 --- a/svc/media_controller_socket.c +++ b/svc/media_controller_socket.c @@ -22,6 +22,7 @@ #include "media_controller_private.h" #include "media_controller_db_util.h" #include "media_controller_socket.h" +#include "media_controller_svc.h" int mc_ipc_create_client_socket(void) { @@ -47,6 +48,9 @@ int mc_ipc_create_client_socket(void) if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { mc_stderror("connect failed"); close(sock); + if (access(LAUNCH_CHECK_FILE, F_OK) != 0) + mc_error("media controller damon hasn't started yet. You have to wait. If daemon starts, [%s] file will be created.", LAUNCH_CHECK_FILE); + return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; } -- 2.34.1