Skip to content

Commit

Permalink
[Event] util to get data
Browse files Browse the repository at this point in the history
Add util function to get the edge event data, and remove unnecessary return code.

Signed-off-by: Jaeyun Jung <[email protected]>
  • Loading branch information
jaeyun-jung committed Aug 28, 2024
1 parent 7af0732 commit 602eb73
Show file tree
Hide file tree
Showing 3 changed files with 149 additions and 6 deletions.
19 changes: 13 additions & 6 deletions include/nnstreamer-edge-event.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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.
*/
Expand Down Expand Up @@ -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 */
Expand Down
30 changes: 30 additions & 0 deletions src/libnnstreamer-edge/nnstreamer-edge-event.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand Down
106 changes: 106 additions & 0 deletions tests/unittest_nnstreamer-edge.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand Down

0 comments on commit 602eb73

Please sign in to comment.