From 6a572151266f4b5319947cfa75dc00f7161a2e8c Mon Sep 17 00:00:00 2001 From: Jaeyun Date: Fri, 2 Dec 2022 15:16:05 +0900 Subject: [PATCH] [CodeClean/Event] util to invoke event Add util function to invoke edge-event callback. Signed-off-by: Jaeyun --- src/libnnstreamer-edge/nnstreamer-edge-aitt.c | 45 +------------ .../nnstreamer-edge-event.c | 40 ++++++++++++ .../nnstreamer-edge-event.h | 5 ++ .../nnstreamer-edge-internal.c | 63 +++---------------- 4 files changed, 56 insertions(+), 97 deletions(-) diff --git a/src/libnnstreamer-edge/nnstreamer-edge-aitt.c b/src/libnnstreamer-edge/nnstreamer-edge-aitt.c index 95685fd..ecb6697 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-aitt.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-aitt.c @@ -172,47 +172,6 @@ nns_edge_aitt_publish (nns_edge_h edge_h, const void *data, const int length) return NNS_EDGE_ERROR_NONE; } -/** - * @brief Internal function to invoke event callback. - * @note This function should be called with handle lock. - */ -static int -_nns_edge_invoke_event_cb (nns_edge_handle_s * eh, nns_edge_event_e event, - void *data, nns_size_t data_len, nns_edge_data_destroy_cb destroy_cb) -{ - nns_edge_event_h event_h; - int ret; - - /* If event callback is null, return ok. */ - if (!eh->event_cb) { - nns_edge_logw ("AITT: The event callback is null, do nothing!"); - return NNS_EDGE_ERROR_NONE; - } - - ret = nns_edge_event_create (event, &event_h); - if (ret != NNS_EDGE_ERROR_NONE) { - nns_edge_loge ("Failed to create new edge event."); - return ret; - } - - if (data) { - ret = nns_edge_event_set_data (event_h, data, data_len, destroy_cb); - if (ret != NNS_EDGE_ERROR_NONE) { - nns_edge_loge ("Failed to handle edge event due to invalid event data."); - goto error; - } - } - - ret = eh->event_cb (event_h, eh->user_data); - if (ret != NNS_EDGE_ERROR_NONE) { - nns_edge_loge ("The event callback returns error."); - } - -error: - nns_edge_event_destroy (event_h); - return ret; -} - /** * @brief Callback function to be called when a message is arrived. */ @@ -238,8 +197,8 @@ aitt_cb_message_arrived (aitt_msg_h msg_handle, const void *msg, nns_edge_data_deserialize (data_h, (void *) msg, (nns_size_t) msg_len); - ret = _nns_edge_invoke_event_cb (eh, NNS_EDGE_EVENT_NEW_DATA_RECEIVED, - data_h, sizeof (nns_edge_data_h), NULL); + ret = nns_edge_event_invoke_callback (eh->event_cb, eh->user_data, + NNS_EDGE_EVENT_NEW_DATA_RECEIVED, data_h, sizeof (nns_edge_data_h), NULL); if (ret != NNS_EDGE_ERROR_NONE) nns_edge_loge ("Failed to send an event for received message."); diff --git a/src/libnnstreamer-edge/nnstreamer-edge-event.c b/src/libnnstreamer-edge/nnstreamer-edge-event.c index 4c5cc77..f40fd4d 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-event.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-event.c @@ -16,6 +16,46 @@ #include "nnstreamer-edge-log.h" #include "nnstreamer-edge-util.h" +/** + * @brief Internal util function to invoke event callback. + */ +int +nns_edge_event_invoke_callback (nns_edge_event_cb event_cb, void *user_data, + nns_edge_event_e event, void *data, nns_size_t data_len, + nns_edge_data_destroy_cb destroy_cb) +{ + nns_edge_event_h event_h; + int ret; + + /* If event callback is null, return ok. */ + if (!event_cb) { + nns_edge_logw ("The event callback is null, do nothing!"); + return NNS_EDGE_ERROR_NONE; + } + + ret = nns_edge_event_create (event, &event_h); + if (ret != NNS_EDGE_ERROR_NONE) { + nns_edge_loge ("Failed to create new edge event."); + return ret; + } + + if (data) { + ret = nns_edge_event_set_data (event_h, data, data_len, destroy_cb); + if (ret != NNS_EDGE_ERROR_NONE) { + nns_edge_loge ("Failed to handle edge event due to invalid event data."); + goto error; + } + } + + ret = event_cb (event_h, user_data); + if (ret != NNS_EDGE_ERROR_NONE) + nns_edge_logw ("The event callback returns error (%d).", ret); + +error: + nns_edge_event_destroy (event_h); + return ret; +} + /** * @brief Create nnstreamer edge event. */ diff --git a/src/libnnstreamer-edge/nnstreamer-edge-event.h b/src/libnnstreamer-edge/nnstreamer-edge-event.h index 04ca26b..dd317c2 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-event.h +++ b/src/libnnstreamer-edge/nnstreamer-edge-event.h @@ -20,6 +20,11 @@ extern "C" { #endif /* __cplusplus */ +/** + * @brief Internal util function to invoke event callback. + */ +int nns_edge_event_invoke_callback (nns_edge_event_cb event_cb, void *user_data, nns_edge_event_e event, void *data, nns_size_t data_len, nns_edge_data_destroy_cb destroy_cb); + /** * @brief Create nnstreamer edge event. * @note This is internal function for edge event. diff --git a/src/libnnstreamer-edge/nnstreamer-edge-internal.c b/src/libnnstreamer-edge/nnstreamer-edge-internal.c index 524c9e8..831f217 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-internal.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-internal.c @@ -462,52 +462,6 @@ _nns_edge_transfer_data (nns_edge_conn_s * conn, nns_edge_data_h data_h, return ret; } -/** - * @brief Internal function to invoke event callback. - * @note This function should be called with handle lock. - */ -static int -_nns_edge_invoke_event_cb (nns_edge_handle_s * eh, nns_edge_event_e event, - void *data, nns_size_t data_len, nns_edge_data_destroy_cb destroy_cb) -{ - nns_edge_event_h event_h; - int ret; - - if (!eh) { - nns_edge_loge ("Invalid param, given edge handle is null."); - return NNS_EDGE_ERROR_INVALID_PARAMETER; - } - - /* If event callback is null, return ok. */ - if (!eh->event_cb) { - nns_edge_logw ("The event callback is null, do nothing!"); - return NNS_EDGE_ERROR_NONE; - } - - ret = nns_edge_event_create (event, &event_h); - if (ret != NNS_EDGE_ERROR_NONE) { - nns_edge_loge ("Failed to create new edge event."); - return ret; - } - - if (data) { - ret = nns_edge_event_set_data (event_h, data, data_len, destroy_cb); - if (ret != NNS_EDGE_ERROR_NONE) { - nns_edge_loge ("Failed to handle edge event due to invalid event data."); - goto error; - } - } - - ret = eh->event_cb (event_h, eh->user_data); - if (ret != NNS_EDGE_ERROR_NONE) { - nns_edge_loge ("The event callback returns error."); - } - -error: - nns_edge_event_destroy (event_h); - return ret; -} - /** * @brief Close connection */ @@ -765,8 +719,9 @@ _nns_edge_message_handler (void *thread_data) nns_edge_data_set_info (data_h, "client_id", val); SAFE_FREE (val); - ret = _nns_edge_invoke_event_cb (eh, NNS_EDGE_EVENT_NEW_DATA_RECEIVED, - data_h, sizeof (nns_edge_data_h), NULL); + ret = nns_edge_event_invoke_callback (eh->event_cb, eh->user_data, + NNS_EDGE_EVENT_NEW_DATA_RECEIVED, data_h, sizeof (nns_edge_data_h), + NULL); if (ret != NNS_EDGE_ERROR_NONE) { /* Try to get next request if server does not accept data from client. */ nns_edge_logw ("The server does not accept data from client."); @@ -784,8 +739,8 @@ _nns_edge_message_handler (void *thread_data) ("Received error from client, remove connection of client (ID: %lld).", (long long) client_id); _nns_edge_remove_connection (eh, client_id); - _nns_edge_invoke_event_cb (eh, NNS_EDGE_EVENT_CONNECTION_CLOSED, - NULL, 0, NULL); + nns_edge_event_invoke_callback (eh->event_cb, eh->user_data, + NNS_EDGE_EVENT_CONNECTION_CLOSED, NULL, 0, NULL); } return NULL; @@ -964,8 +919,8 @@ _nns_edge_connect_to (nns_edge_handle_s * eh, int64_t client_id, client_id = eh->client_id = cmd.info.client_id; /* Check compatibility. */ - ret = _nns_edge_invoke_event_cb (eh, NNS_EDGE_EVENT_CAPABILITY, - cmd.mem[0], cmd.info.mem_size[0], NULL); + ret = nns_edge_event_invoke_callback (eh->event_cb, eh->user_data, + NNS_EDGE_EVENT_CAPABILITY, cmd.mem[0], cmd.info.mem_size[0], NULL); _nns_edge_cmd_clear (&cmd); if (ret != NNS_EDGE_ERROR_NONE) { @@ -1460,8 +1415,8 @@ nns_edge_set_event_callback (nns_edge_h edge_h, nns_edge_event_cb cb, return NNS_EDGE_ERROR_INVALID_PARAMETER; } - ret = _nns_edge_invoke_event_cb (eh, NNS_EDGE_EVENT_CALLBACK_RELEASED, - NULL, 0, NULL); + ret = nns_edge_event_invoke_callback (eh->event_cb, eh->user_data, + NNS_EDGE_EVENT_CALLBACK_RELEASED, NULL, 0, NULL); if (ret != NNS_EDGE_ERROR_NONE) { nns_edge_loge ("Failed to set new event callback."); nns_edge_unlock (eh); -- 2.34.1