Modify dcm send msg function 60/213760/5 accepted/tizen/unified/20190916.111545 submit/tizen/20190916.065445
authorMinje Ahn <minje.ahn@samsung.com>
Wed, 11 Sep 2019 05:37:54 +0000 (14:37 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Mon, 16 Sep 2019 05:48:26 +0000 (14:48 +0900)
Change-Id: I737c7a196fb31ce54f25bfb28326aa8726045830
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
include/dcm_svc_ipc.h
src/dcm_svc_ipc.c
svc/dcm_svc_main.c

index bd16426e317938bf13c84600e05e7081bb23f580..da5d669016caf89f648e07085acddd4cec57ddac 100755 (executable)
@@ -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_ */
 
index 076d26d4eb1f5a26a6569a2a43facb5010cb3687..af0fef74c9fcdf346726f0441ee7a22772a27e7b 100755 (executable)
@@ -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);
 }
index 89f2492e727bb429bfd2b48412f86c48d61e9b77..4a0da8c913bf6c7eb11213cf215959c1582e62b4 100755 (executable)
 
 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");