[CodeClean/Event] util to invoke event
authorJaeyun <jy1210.jung@samsung.com>
Fri, 2 Dec 2022 06:16:05 +0000 (15:16 +0900)
committerjaeyun-jung <39614140+jaeyun-jung@users.noreply.github.com>
Mon, 5 Dec 2022 06:29:06 +0000 (15:29 +0900)
Add util function to invoke edge-event callback.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
src/libnnstreamer-edge/nnstreamer-edge-aitt.c
src/libnnstreamer-edge/nnstreamer-edge-event.c
src/libnnstreamer-edge/nnstreamer-edge-event.h
src/libnnstreamer-edge/nnstreamer-edge-internal.c

index 95685fdbb23656d12d141698d76f80a4e33246d1..ecb6697ee4df218ac9bc10a9e44f72f0730dee51 100644 (file)
@@ -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.");
 
index 4c5cc775f2e23c2a9f9c70a081f9685233bdca6f..f40fd4d0004c56ccc47842c1c43e87b506e7f40b 100644 (file)
 #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.
  */
index 04ca26ba9a3012279c6e1b6b2c67fae7c5deafd0..dd317c2cc35927bbd8eceb86617123a5b90c472a 100644 (file)
 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.
index 524c9e86365b14f608c50684bc312bee9873de0e..831f217df48793488031a94985f399ed1e4596f7 100644 (file)
@@ -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);