int muse_core_ipc_send_fd_msg(int sock_fd, int *fds, const char *buf);
int muse_core_ipc_recv_msg(int sock_fd, char *msg);
int muse_core_ipc_recv_fd_msg(int sock_fd, char *buf, int *out_fd);
-void muse_core_ipc_set_timeout(int sock_fd, unsigned long timeout_sec, int level);
+int muse_core_ipc_set_timeout(int sock_fd, int timeout_sec);
gboolean muse_core_ipc_data_job_function(muse_core_workqueue_job_t * job);
int muse_core_ipc_push_data(int sock_fd, const char *data, int size, uint64_t data_id);
char *muse_core_ipc_get_data(muse_module_h module);
return _muse_core_ipc_verify_msg_complete(sock_fd, buf, ret);
}
-void muse_core_ipc_set_timeout(int sock_fd, unsigned long timeout_sec, int level)
+int muse_core_ipc_set_timeout(int sock_fd, int timeout_sec)
{
- LOGD("Enter");
+ char err_msg[MUSE_MAX_ERROR_MSG_LEN] = {'\0',};
struct timeval tv;
+
+ LOGD("Enter");
+
tv.tv_sec = timeout_sec;
tv.tv_usec = 0L;
- if (setsockopt(sock_fd, SOL_SOCKET, level, (void*)&tv, (socklen_t)sizeof(tv)) == SOCK_ERR)
- LOGE("Failed to set socket option : %d", level);
+ if (setsockopt(sock_fd, SOL_SOCKET, SO_SNDTIMEO, (void*)&tv, (socklen_t)sizeof(tv)) == SOCK_ERR) {
+ strerror_r(errno, err_msg, MUSE_MAX_ERROR_MSG_LEN);
+ LOGE("[%d] Failed to set socket send timeout option (%s) %d", sock_fd, err_msg, errno);
+ return MM_ERROR_UNKNOWN;
+ }
+
+ if (setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, (void*)&tv, (socklen_t)sizeof(tv)) == SOCK_ERR) {
+ strerror_r(errno, err_msg, MUSE_MAX_ERROR_MSG_LEN);
+ LOGE("[%d] Failed to set socket recv timeout option (%s) %d", sock_fd, err_msg, errno);
+ return MM_ERROR_UNKNOWN;
+ }
+
LOGD("Leave");
+
+ return MM_ERROR_NONE;
}
int muse_core_ipc_push_data(int sock_fd, const char *data, int size, uint64_t data_id)