[Event] util to get data
authorJaeyun Jung <jy1210.jung@samsung.com>
Wed, 28 Aug 2024 01:57:55 +0000 (10:57 +0900)
committerjaeyun-jung <39614140+jaeyun-jung@users.noreply.github.com>
Wed, 28 Aug 2024 03:24:19 +0000 (12:24 +0900)
Add util function to get the edge event data, and remove unnecessary return code.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
include/nnstreamer-edge-event.h
src/libnnstreamer-edge/nnstreamer-edge-event.c
tests/unittest_nnstreamer-edge.cc

index 36793c0994742814503bd359e81579c4a0c9a0ca..e8856150d088d192a69a025c1cf628e31920c147 100644 (file)
@@ -49,7 +49,6 @@ typedef int (*nns_edge_event_cb) (nns_edge_event_h event_h, void *user_data);
  * @param[out] event The event type, value of @a nns_edge_event_e.
  * @return 0 on success. Otherwise a negative error value.
  * @retval #NNS_EDGE_ERROR_NONE Successful.
- * @retval #NNS_EDGE_ERROR_NOT_SUPPORTED Not supported.
  * @retval #NNS_EDGE_ERROR_INVALID_PARAMETER Given parameter is invalid.
  */
 int nns_edge_event_get_type (nns_edge_event_h event_h, nns_edge_event_e *event);
@@ -61,7 +60,6 @@ int nns_edge_event_get_type (nns_edge_event_h event_h, nns_edge_event_e *event);
  * @param[out] data_h Handle of received data.
  * @return 0 on success. Otherwise a negative error value.
  * @retval #NNS_EDGE_ERROR_NONE Successful.
- * @retval #NNS_EDGE_ERROR_NOT_SUPPORTED Not supported.
  * @retval #NNS_EDGE_ERROR_INVALID_PARAMETER Given parameter is invalid
  */
 int nns_edge_event_parse_new_data (nns_edge_event_h event_h, nns_edge_data_h *data_h);
@@ -73,7 +71,6 @@ int nns_edge_event_parse_new_data (nns_edge_event_h event_h, nns_edge_data_h *da
  * @param[out] capability Capability string.
  * @return 0 on success. Otherwise a negative error value.
  * @retval #NNS_EDGE_ERROR_NONE Successful.
- * @retval #NNS_EDGE_ERROR_NOT_SUPPORTED Not supported.
  * @retval #NNS_EDGE_ERROR_INVALID_PARAMETER Given parameter is invalid
  */
 int nns_edge_event_parse_capability (nns_edge_event_h event_h, char **capability);
@@ -87,7 +84,6 @@ int nns_edge_event_parse_capability (nns_edge_event_h event_h, char **capability
  * @param[in] destroy_cb A callback function to free the event data.
  * @return 0 on success. Otherwise a negative error value.
  * @retval #NNS_EDGE_ERROR_NONE Successful.
- * @retval #NNS_EDGE_ERROR_NOT_SUPPORTED Not supported.
  * @retval #NNS_EDGE_ERROR_INVALID_PARAMETER Given parameter is invalid.
  * @retval #NNS_EDGE_ERROR_OUT_OF_MEMORY Failed to allocate required memory.
  */
@@ -120,15 +116,26 @@ int nns_edge_event_destroy (nns_edge_event_h event_h);
  * @brief Set event data.
  * @param[in] event_h The handle of edge event.
  * @param[in] data A pointer to event data.
- * @param[in] data_len Length of the event data.
+ * @param[in] data_len The byte size of the event data.
  * @param[in] destroy_cb A callback function to destroy the event data.
  * @return 0 on success. Otherwise a negative error value.
  * @retval #NNS_EDGE_ERROR_NONE Successful.
- * @retval #NNS_EDGE_ERROR_NOT_SUPPORTED Not supported.
  * @retval #NNS_EDGE_ERROR_INVALID_PARAMETER Given parameter is invalid.
  */
 int nns_edge_event_set_data (nns_edge_event_h event_h, void *data, nns_size_t data_len, nns_edge_data_destroy_cb destroy_cb);
 
+/**
+ * @brief Get event data.
+ * @note DO NOT release returned data. You should copy the data to another buffer if the returned data is necessary.
+ * @param[in] event_h The handle of edge event.
+ * @param[out] data The data in the event handle.
+ * @param[out] data_len The byte size of the event data.
+ * @return 0 on success. Otherwise a negative error value.
+ * @retval #NNS_EDGE_ERROR_NONE Successful.
+ * @retval #NNS_EDGE_ERROR_INVALID_PARAMETER Given parameter is invalid.
+ */
+int nns_edge_event_get_data (nns_edge_event_h event_h, void **data, nns_size_t *data_len);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
index 44b7edb277f192e59a75e543e33f046c88d6e75d..b5ab54a5fce023f12f6ba06a3bf734b45e07bb26 100644 (file)
@@ -161,6 +161,36 @@ nns_edge_event_set_data (nns_edge_event_h event_h, void *data,
   return NNS_EDGE_ERROR_NONE;
 }
 
+/**
+ * @brief Get event data.
+ */
+int
+nns_edge_event_get_data (nns_edge_event_h event_h, void **data,
+    nns_size_t * data_len)
+{
+  nns_edge_event_s *ee;
+
+  ee = (nns_edge_event_s *) event_h;
+
+  if (!nns_edge_handle_is_valid (ee)) {
+    nns_edge_loge ("Invalid param, given edge event is invalid.");
+    return NNS_EDGE_ERROR_INVALID_PARAMETER;
+  }
+
+  if (!data || !data_len) {
+    nns_edge_loge ("Invalid param, data and len should not be null.");
+    return NNS_EDGE_ERROR_INVALID_PARAMETER;
+  }
+
+  nns_edge_lock (ee);
+
+  *data = ee->data.data;
+  *data_len = ee->data.data_len;
+
+  nns_edge_unlock (ee);
+  return NNS_EDGE_ERROR_NONE;
+}
+
 /**
  * @brief Get the nnstreamer edge event type.
  */
index 0fb53983a226dcda576e4f857dd7dce7b0ba4326..050c3653d75264c8285a669c3b79e5c3f70c6f35 100644 (file)
@@ -2643,6 +2643,112 @@ TEST(edgeEvent, setDataInvalidParam04_n)
   SAFE_FREE (data);
 }
 
+/**
+ * @brief Get edge event data.
+ */
+TEST(edgeEvent, getData)
+{
+  nns_edge_event_h event_h;
+  void *input = NULL, *output = NULL;
+  nns_size_t input_len = 0U, output_len = 0U;
+  int ret;
+
+  input_len = 10U * sizeof (int);
+  input = malloc (input_len);
+  ASSERT_TRUE (input != NULL);
+
+  ret = nns_edge_event_create (NNS_EDGE_EVENT_CUSTOM, &event_h);
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+
+  ret = nns_edge_event_set_data (event_h, input, input_len, NULL);
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+
+  ret = nns_edge_event_get_data (event_h, &output, &output_len);
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+  EXPECT_TRUE (input == output);
+  EXPECT_TRUE (input_len == output_len);
+
+  ret = nns_edge_event_destroy (event_h);
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+
+  SAFE_FREE (input);
+}
+
+/**
+ * @brief Get edge event data - invalid param.
+ */
+TEST(edgeEvent, getDataInvalidParam01_n)
+{
+  void *data;
+  nns_size_t data_len;
+  int ret;
+
+  ret = nns_edge_event_get_data (NULL, &data, &data_len);
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);
+}
+
+/**
+ * @brief Get edge event data - invalid param.
+ */
+TEST(edgeEvent, getDataInvalidParam02_n)
+{
+  nns_edge_event_h event_h;
+  nns_size_t data_len;
+  int ret;
+
+  ret = nns_edge_event_create (NNS_EDGE_EVENT_CUSTOM, &event_h);
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+
+  ret = nns_edge_event_get_data (event_h, NULL, &data_len);
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);
+
+  ret = nns_edge_event_destroy (event_h);
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+}
+
+/**
+ * @brief Get edge event data - invalid param.
+ */
+TEST(edgeEvent, getDataInvalidParam03_n)
+{
+  nns_edge_event_h event_h;
+  void *data;
+  int ret;
+
+  ret = nns_edge_event_create (NNS_EDGE_EVENT_CUSTOM, &event_h);
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+
+  ret = nns_edge_event_get_data (event_h, &data, NULL);
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);
+
+  ret = nns_edge_event_destroy (event_h);
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+}
+
+/**
+ * @brief Get edge event data - invalid param.
+ */
+TEST(edgeEvent, getDataInvalidParam04_n)
+{
+  nns_edge_event_h event_h;
+  void *data;
+  nns_size_t data_len;
+  int ret;
+
+  ret = nns_edge_event_create (NNS_EDGE_EVENT_CUSTOM, &event_h);
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+
+  nns_edge_handle_set_magic (event_h, NNS_EDGE_MAGIC_DEAD);
+
+  ret = nns_edge_event_get_data (event_h, &data, &data_len);
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);
+
+  nns_edge_handle_set_magic (event_h, NNS_EDGE_MAGIC);
+
+  ret = nns_edge_event_destroy (event_h);
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+}
+
 /**
  * @brief Get edge event type.
  */