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;
/* 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) {
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);
}
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)
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) {
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);
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");