* @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);
* @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);
* @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);
* @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.
*/
* @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 */
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.
*/
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.
*/