From: Minje Ahn Date: Wed, 11 Sep 2019 05:37:54 +0000 (+0900) Subject: Modify dcm send msg function X-Git-Tag: submit/tizen/20190916.065445^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=770bf133792bf30ee067bff225033504bbd5ff4f;p=platform%2Fcore%2Fmultimedia%2Fdcm-service.git Modify dcm send msg function Change-Id: I737c7a196fb31ce54f25bfb28326aa8726045830 Signed-off-by: Minje Ahn --- diff --git a/include/dcm_svc_ipc.h b/include/dcm_svc_ipc.h index bd16426..da5d669 100755 --- a/include/dcm_svc_ipc.h +++ b/include/dcm_svc_ipc.h @@ -33,9 +33,9 @@ typedef enum { int dcm_ipc_create_socket(int *socket_fd, dcm_ipc_port_e port); int dcm_ipc_accept_socket(int serv_sock, int *client_sock); int dcm_ipc_receive_message(int client_sock, dcmMsg *recv_msg); -int dcm_ipc_send_message(ms_dcm_msg_type_e msg_type, uid_t uid, const char *msg, dcm_ipc_port_e port); -int dcm_ipc_send_client_message(int socket_fd, ms_dcm_msg_type_e msg_type, unsigned int result, const char *msg, dcm_ipc_port_e port); -int dcm_ipc_close_socket(int socket_fd); +int dcm_ipc_send_ready(void); +int dcm_ipc_send_client_message(int socket_fd, int result, const char *msg); +void dcm_ipc_close_socket(int socket_fd); #endif /* _DCM_SVC_IPC_H_ */ diff --git a/src/dcm_svc_ipc.c b/src/dcm_svc_ipc.c index 076d26d..af0fef7 100755 --- a/src/dcm_svc_ipc.c +++ b/src/dcm_svc_ipc.c @@ -125,91 +125,43 @@ int dcm_ipc_create_socket(int *socket_fd, dcm_ipc_port_e port) return MS_MEDIA_ERR_NONE; } -int dcm_ipc_send_client_message(int socket_fd, ms_dcm_msg_type_e msg_type, unsigned int result, const char *msg, dcm_ipc_port_e port) +int dcm_ipc_send_client_message(int socket_fd, int result, const char *msg) { - if (port < 0 || port >= DCM_IPC_PORT_MAX) { - dcm_error("Invalid port! Stop sending message..."); - return MS_MEDIA_ERR_INVALID_PARAMETER; - } - dcm_debug("Send message type: [%d] msg : [%s] result : [%d]", msg_type, msg, result); - dcmMsg send_msg; - int sock = -1; - - if (socket_fd < 0) { - struct sockaddr_un serv_addr; - struct timeval tv_timeout = { DCM_TIMEOUT_SEC_60, 0 }; /* timeout: 60 seconds */ - - if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) { - dcm_stderror("socket failed"); - return MS_MEDIA_ERR_SOCKET_INTERNAL; - } - if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &tv_timeout, sizeof(tv_timeout)) == -1) { - dcm_stderror("setsockopt failed"); - close(sock); - return MS_MEDIA_ERR_SOCKET_INTERNAL; - } - - memset(&serv_addr, 0, sizeof(serv_addr)); - serv_addr.sun_family = AF_UNIX; - DCM_SAFE_STRLCPY(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, DCM_IPC_PATH[port]), sizeof(serv_addr.sun_path)); - - /* Connecting to the media server */ - if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) { - dcm_stderror("connect"); - close(sock); - return MS_MEDIA_ERR_SOCKET_CONN; - } - } else { - sock = socket_fd; - } + DCM_CHECK_VAL(msg, MS_MEDIA_ERR_INVALID_PARAMETER); /* Prepare send message */ memset((void *)&send_msg, 0, sizeof(dcmMsg)); - send_msg.msg_type = msg_type; - send_msg.result = (int)result; - if (msg != NULL) - DCM_SAFE_STRLCPY(send_msg.msg, msg, DCM_IPC_MSG_MAX_SIZE); + send_msg.msg_type = DCM_MSG_REQUEST_MEDIA; + send_msg.result = result; + DCM_SAFE_STRLCPY(send_msg.msg, msg, DCM_IPC_MSG_MAX_SIZE); /* Send msg to the socket */ - if (send(sock, &send_msg, sizeof(send_msg), 0) != sizeof(send_msg)) { + if (send(socket_fd, &send_msg, sizeof(send_msg), 0) != sizeof(send_msg)) { dcm_stderror("send failed"); - close(sock); return MS_MEDIA_ERR_SOCKET_SEND; } - dcm_debug("Sent message type: [%d] [%d]", send_msg.msg_type, send_msg.result); - - close(sock); + dcm_debug("Sent result [%d]", send_msg.result); return MS_MEDIA_ERR_NONE; } -int dcm_ipc_send_message(ms_dcm_msg_type_e msg_type, uid_t uid, const char *msg, dcm_ipc_port_e port) +int dcm_ipc_send_ready(void) { - if (port < 0 || port >= DCM_IPC_PORT_MAX) { - dcm_error("Invalid port! Stop sending message..."); - return MS_MEDIA_ERR_INVALID_PARAMETER; - } - - dcm_debug_fenter(); - - dcm_debug("Send message type: %d", msg_type); - int socket_fd = -1; struct sockaddr_un serv_addr; dcmMsg send_msg; + dcm_debug_fenter(); + /* Prepare send message */ memset((void *)&send_msg, 0, sizeof(dcmMsg)); - send_msg.msg_type = msg_type; - send_msg.uid = uid; - if (msg != NULL) { - DCM_SAFE_STRLCPY(send_msg.msg, msg, DCM_IPC_MSG_MAX_SIZE); - } + send_msg.msg_type = DCM_MSG_SERVER_READY; + send_msg.uid = 0; - /* Create a new TCP socket */ + /* Create a new UDS socket */ if ((socket_fd = socket(PF_FILE, SOCK_STREAM, 0)) < 0) { dcm_stderror("socket failed"); return MS_MEDIA_ERR_SOCKET_SEND; @@ -218,7 +170,7 @@ int dcm_ipc_send_message(ms_dcm_msg_type_e msg_type, uid_t uid, const char *msg, /* Set dcm thread socket address */ memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sun_family = AF_UNIX; - DCM_SAFE_STRLCPY(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, DCM_IPC_PATH[port]), sizeof(serv_addr.sun_path)); + DCM_SAFE_STRLCPY(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, DCM_IPC_PATH[DCM_IPC_PORT_MS_RECV]), sizeof(serv_addr.sun_path)); /* Connect to the socket */ if (connect(socket_fd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) { @@ -241,13 +193,12 @@ int dcm_ipc_send_message(ms_dcm_msg_type_e msg_type, uid_t uid, const char *msg, return MS_MEDIA_ERR_NONE; } -int dcm_ipc_close_socket(int socket_fd) +void dcm_ipc_close_socket(int socket_fd) { if (socket_fd < 0) { dcm_error("The socket has been closed already."); - return MS_MEDIA_ERR_NONE; + return; } - close(socket_fd); - return MS_MEDIA_ERR_NONE; + close(socket_fd); } diff --git a/svc/dcm_svc_main.c b/svc/dcm_svc_main.c index 89f2492..4a0da8c 100755 --- a/svc/dcm_svc_main.c +++ b/svc/dcm_svc_main.c @@ -26,16 +26,12 @@ static GMainLoop *g_dcm_svc_mainloop; -gboolean __dcm_svc_kill_service() +static void __dcm_svc_kill_service(void) { if (g_dcm_svc_mainloop != NULL) { - dcm_error("[No-Error] Quit DCM Service"); + dcm_warn("Shutting down DCM Service"); g_main_loop_quit(g_dcm_svc_mainloop); - } else { - dcm_error("Invalid DCM thread main loop!"); } - - return FALSE; } gboolean dcm_service_recieve_request(GIOChannel *src, GIOCondition condition, gpointer data) @@ -45,10 +41,8 @@ gboolean dcm_service_recieve_request(GIOChannel *src, GIOCondition condition, gp int client_sock = -1; int ret = 0; int face_count = 0; - char msg_str[MAX_FILEPATH_LEN] = {0, }; memset((void *)&recv_msg, 0, sizeof(recv_msg)); - memset(msg_str, 0, sizeof(msg_str)); sock = g_io_channel_unix_get_fd(src); if (sock < 0) { @@ -69,21 +63,19 @@ gboolean dcm_service_recieve_request(GIOChannel *src, GIOCondition condition, gp return TRUE; } - DCM_SAFE_STRLCPY(msg_str, recv_msg.msg, sizeof(msg_str)); - - dcm_sec_info("msg_type[%d] uid[%d] msg[%.*s]", recv_msg.msg_type, recv_msg.uid, MAX_FILEPATH_LEN, msg_str); + dcm_sec_info("msg_type[%d] uid[%d] msg[%.*s]", recv_msg.msg_type, recv_msg.uid, MAX_FILEPATH_LEN, recv_msg.msg); if (recv_msg.msg_type == DCM_MSG_REQUEST_KILL_SERVER) { dcm_warn("Receive DCM_MSG_REQUEST_KILL_SERVER"); __dcm_svc_kill_service(); } else if (recv_msg.msg_type == DCM_MSG_REQUEST_MEDIA) { - ret = dcm_scan_single(msg_str, recv_msg.uid, &face_count); + ret = dcm_scan_single(recv_msg.msg, recv_msg.uid, &face_count); dcm_debug("Scan single result: ret[%d] face_count[%d]", ret, face_count); if (ret == MS_MEDIA_ERR_NONE) - ret = dcm_ipc_send_client_message(client_sock, DCM_MSG_REQUEST_MEDIA, face_count, msg_str, DCM_IPC_PORT_MS_RECV); + ret = dcm_ipc_send_client_message(client_sock, face_count, recv_msg.msg); else - ret = dcm_ipc_send_client_message(client_sock, DCM_MSG_REQUEST_MEDIA, ret, msg_str, DCM_IPC_PORT_MS_RECV); + ret = dcm_ipc_send_client_message(client_sock, ret, recv_msg.msg); if (ret != MS_MEDIA_ERR_NONE) dcm_error("Failed to dcm_ipc_send_client_message(%d)", ret); @@ -125,7 +117,7 @@ int main(int argc, char *argv[]) dcm_error("Failed to dcm_face_detect_initialize"); /* Send ready response to dcm launcher */ - if (dcm_ipc_send_message(DCM_MSG_SERVER_READY, 0, NULL, DCM_IPC_PORT_MS_RECV) != MS_MEDIA_ERR_NONE) + if (dcm_ipc_send_ready() != MS_MEDIA_ERR_NONE) dcm_error("Failed to send ready message"); dcm_info("DCM Service is running");