From 9827653ff380a1e758bfd4fac6e07de811b7b4e1 Mon Sep 17 00:00:00 2001 From: gichan Date: Wed, 20 Jul 2022 14:48:10 +0900 Subject: [PATCH] [Edge] Replace caps info Replace caps info instead of appedning the string. Signed-off-by: gichan --- include/nnstreamer-edge.h | 5 ++ .../nnstreamer-edge-internal.c | 57 ++++++++++++++++++- 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/include/nnstreamer-edge.h b/include/nnstreamer-edge.h index 7b69a61..1aa9987 100644 --- a/include/nnstreamer-edge.h +++ b/include/nnstreamer-edge.h @@ -149,6 +149,11 @@ int nns_edge_get_topic (nns_edge_h edge_h, char **topic); */ int nns_edge_set_info (nns_edge_h edge_h, const char *key, const char *value); +/** + * @brief Get nnstreamer edge info. + */ +int nns_edge_get_info (nns_edge_h edge_h, const char *key, char **value); + /** * @brief Get the nnstreamer edge event type. */ diff --git a/src/libnnstreamer-edge/nnstreamer-edge-internal.c b/src/libnnstreamer-edge/nnstreamer-edge-internal.c index 23c146e..82bccbb 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-internal.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-internal.c @@ -1372,7 +1372,6 @@ int nns_edge_set_info (nns_edge_h edge_h, const char *key, const char *value) { nns_edge_handle_s *eh; - char *ret_str = NULL; eh = (nns_edge_handle_s *) edge_h; if (!eh) { @@ -1403,9 +1402,8 @@ nns_edge_set_info (nns_edge_h edge_h, const char *key, const char *value) * @todo Change key-value set as json or hash table. */ if (0 == g_ascii_strcasecmp (key, "CAPS")) { - ret_str = nns_edge_strdup_printf ("%s%s", _STR_NULL (eh->caps_str), value); SAFE_FREE (eh->caps_str); - eh->caps_str = ret_str; + eh->caps_str = nns_edge_strdup (value); } else if (0 == g_ascii_strcasecmp (key, "IP")) { SAFE_FREE (eh->recv_ip); eh->recv_ip = nns_edge_strdup (value); @@ -1422,6 +1420,59 @@ nns_edge_set_info (nns_edge_h edge_h, const char *key, const char *value) return NNS_EDGE_ERROR_NONE; } + +/** + * @brief Get nnstreamer edge info. + */ +int +nns_edge_get_info (nns_edge_h edge_h, const char *key, char **value) +{ + nns_edge_handle_s *eh; + + eh = (nns_edge_handle_s *) edge_h; + if (!eh) { + nns_edge_loge ("Invalid param, given edge handle is null."); + return NNS_EDGE_ERROR_INVALID_PARAMETER; + } + + if (!STR_IS_VALID (key)) { + nns_edge_loge ("Invalid param, given key is invalid."); + return NNS_EDGE_ERROR_INVALID_PARAMETER; + } + + if (!value) { + nns_edge_loge ("Invalid param, given value is invalid."); + return NNS_EDGE_ERROR_INVALID_PARAMETER; + } + + nns_edge_lock (eh); + + if (!NNS_EDGE_MAGIC_IS_VALID (eh)) { + nns_edge_loge ("Invalid param, given edge handle is invalid."); + nns_edge_unlock (eh); + return NNS_EDGE_ERROR_INVALID_PARAMETER; + } + + /** + * @todo User handles (replace or append) the capability of edge handle. + * @todo Change key-value set as json or hash table. + */ + if (0 == g_ascii_strcasecmp (key, "CAPS")) { + *value = nns_edge_strdup (eh->caps_str); + } else if (0 == g_ascii_strcasecmp (key, "IP")) { + *value = nns_edge_strdup (eh->recv_ip); + } else if (0 == g_ascii_strcasecmp (key, "PORT")) { + *value = nns_edge_strdup_printf ("%d", eh->recv_port); + } else if (0 == g_ascii_strcasecmp (key, "TOPIC")) { + *value = nns_edge_strdup (eh->topic); + } else { + nns_edge_logw ("Failed to get edge info. Unknown key: %s", key); + } + + nns_edge_unlock (eh); + return NNS_EDGE_ERROR_NONE; +} + /** * @brief Respond to a request. */ -- 2.34.1