From 7f2798a793b2083fddf8d68de00c7fedf992309e Mon Sep 17 00:00:00 2001 From: Hyunho Kang Date: Wed, 16 Nov 2016 17:24:36 +0900 Subject: [PATCH] Add mutex lock for multi thread application Read sequence could be resembled when multi thread send message concurrently. Change-Id: Iaf45e86cb347f017417ec6023db5a2d761dd8099 Signed-off-by: Hyunho Kang --- src/message_port.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/message_port.c b/src/message_port.c index 971e829..459bfe5 100644 --- a/src/message_port.c +++ b/src/message_port.c @@ -186,24 +186,39 @@ int message_port_check_trusted_remote_port(const char *remote_app_id, const char int message_port_send_message(const char *remote_app_id, const char *remote_port, bundle *message) { + int ret; if (remote_app_id == NULL || remote_port == NULL || message == NULL) { _LOGE("[MESSAGE_PORT_ERROR_INVALID_PARAMETER] NULL value is not allowed."); return MESSAGE_PORT_ERROR_INVALID_PARAMETER; } - return convert_to_tizen_error((messageport_error_e)messageport_send_message(remote_app_id, remote_port, message)); + + _SECURE_LOGI("Send a message to (%s):(%s).", remote_app_id, remote_port); + pthread_mutex_lock(&__mutex); + ret = messageport_send_message(remote_app_id, remote_port, message); + pthread_mutex_unlock(&__mutex); + + return convert_to_tizen_error((messageport_error_e)ret); } int message_port_send_trusted_message(const char *remote_app_id, const char *remote_port, bundle *message) { + int ret; if (remote_app_id == NULL || remote_port == NULL || message == NULL) { _LOGE("[MESSAGE_PORT_ERROR_INVALID_PARAMETER] NULL value is not allowed."); return MESSAGE_PORT_ERROR_INVALID_PARAMETER; } - return convert_to_tizen_error((messageport_error_e)messageport_send_trusted_message(remote_app_id, remote_port, message)); + _SECURE_LOGI("Send a trusted message to (%s):(%s).", remote_app_id, remote_port); + + pthread_mutex_lock(&__mutex); + ret = messageport_send_trusted_message(remote_app_id, remote_port, message); + pthread_mutex_unlock(&__mutex); + + return convert_to_tizen_error((messageport_error_e)ret); } int message_port_send_message_with_local_port(const char *remote_app_id, const char *remote_port, bundle *message, int local_port_id) { + int ret; if (remote_app_id == NULL || remote_port == NULL || message == NULL) { _LOGE("[MESSAGE_PORT_ERROR_INVALID_PARAMETER] NULL value is not allowed."); return MESSAGE_PORT_ERROR_INVALID_PARAMETER; @@ -229,11 +244,16 @@ int message_port_send_message_with_local_port(const char *remote_app_id, const c } _SECURE_LOGI("Send a message to (%s):(%s) and listen at the local port ID (%d).", remote_app_id, remote_port, local_port_id); - return convert_to_tizen_error((messageport_error_e)messageport_send_bidirectional_message(local_port_id, remote_app_id, remote_port, message)); + pthread_mutex_lock(&__mutex); + ret = messageport_send_bidirectional_message(local_port_id, remote_app_id, remote_port, message); + pthread_mutex_unlock(&__mutex); + + return convert_to_tizen_error((messageport_error_e)ret); } int message_port_send_trusted_message_with_local_port(const char *remote_app_id, const char *remote_port, bundle *message, int local_port_id) { + int ret; if (remote_app_id == NULL || remote_port == NULL || message == NULL) { _LOGE("[MESSAGE_PORT_ERROR_INVALID_PARAMETER] NULL value is not allowed."); return MESSAGE_PORT_ERROR_INVALID_PARAMETER; @@ -257,6 +277,10 @@ int message_port_send_trusted_message_with_local_port(const char *remote_app_id, } _SECURE_LOGI("Send a trusted message to (%s):(%s) and listen at the local port ID (%d).", remote_app_id, remote_port, local_port_id); - return convert_to_tizen_error((messageport_error_e)messageport_send_bidirectional_trusted_message(local_port_id, remote_app_id, remote_port, message)); + pthread_mutex_lock(&__mutex); + ret = messageport_send_bidirectional_trusted_message(local_port_id, remote_app_id, remote_port, message); + pthread_mutex_unlock(&__mutex); + + return convert_to_tizen_error((messageport_error_e)ret); } -- 2.7.4