[Meta] list for metadata
authorJaeyun <jy1210.jung@samsung.com>
Wed, 20 Jul 2022 08:28:30 +0000 (17:28 +0900)
committerMyungJoo Ham <myungjoo.ham@samsung.com>
Thu, 4 Aug 2022 11:23:57 +0000 (20:23 +0900)
Replace hashtable (glib) to list, setting/getting metadata of edge handle.

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

index 75c69bf74ae2da2bb60cf3d0c7708fd175d9679e..15ed6d21113243c07ed35d8c729b4ba75ccba4fd 100644 (file)
@@ -629,8 +629,7 @@ nns_edge_data_create (nns_edge_data_h * data_h)
 
   memset (ed, 0, sizeof (nns_edge_data_s));
   ed->magic = NNS_EDGE_MAGIC;
-  ed->info_table = g_hash_table_new_full (g_str_hash, g_str_equal,
-      nns_edge_free, nns_edge_free);
+  nns_edge_metadata_init (&ed->metadata);
 
   *data_h = ed;
   return NNS_EDGE_ERROR_NONE;
@@ -659,7 +658,7 @@ nns_edge_data_destroy (nns_edge_data_h data_h)
       ed->data[i].destroy_cb (ed->data[i].data);
   }
 
-  g_hash_table_destroy (ed->info_table);
+  nns_edge_metadata_free (&ed->metadata);
 
   SAFE_FREE (ed);
   return NNS_EDGE_ERROR_NONE;
@@ -691,8 +690,6 @@ nns_edge_data_copy (nns_edge_data_h data_h, nns_edge_data_h * new_data_h)
 {
   nns_edge_data_s *ed;
   nns_edge_data_s *copied;
-  GHashTableIter iter;
-  gpointer key, value;
   unsigned int i;
   int ret;
 
@@ -724,13 +721,7 @@ nns_edge_data_copy (nns_edge_data_h data_h, nns_edge_data_h * new_data_h)
     copied->data[i].destroy_cb = nns_edge_free;
   }
 
-  g_hash_table_iter_init (&iter, ed->info_table);
-  while (g_hash_table_iter_next (&iter, &key, &value)) {
-    g_hash_table_insert (copied->info_table, nns_edge_strdup (key),
-        nns_edge_strdup (value));
-  }
-
-  return NNS_EDGE_ERROR_NONE;
+  return nns_edge_metadata_copy (&copied->metadata, &ed->metadata);
 }
 
 /**
@@ -854,10 +845,7 @@ nns_edge_data_set_info (nns_edge_data_h data_h, const char *key,
     return NNS_EDGE_ERROR_INVALID_PARAMETER;
   }
 
-  g_hash_table_insert (ed->info_table, nns_edge_strdup (key),
-      nns_edge_strdup (value));
-
-  return NNS_EDGE_ERROR_NONE;
+  return nns_edge_metadata_set (&ed->metadata, key, value);
 }
 
 /**
@@ -867,7 +855,6 @@ int
 nns_edge_data_get_info (nns_edge_data_h data_h, const char *key, char **value)
 {
   nns_edge_data_s *ed;
-  char *val;
 
   ed = (nns_edge_data_s *) data_h;
 
@@ -886,13 +873,5 @@ nns_edge_data_get_info (nns_edge_data_h data_h, const char *key, char **value)
     return NNS_EDGE_ERROR_INVALID_PARAMETER;
   }
 
-  val = g_hash_table_lookup (ed->info_table, key);
-  if (!val) {
-    nns_edge_loge ("Invalid param, cannot find info about '%s'.", key);
-    return NNS_EDGE_ERROR_INVALID_PARAMETER;
-  }
-
-  *value = nns_edge_strdup (val);
-
-  return NNS_EDGE_ERROR_NONE;
+  return nns_edge_metadata_get (&ed->metadata, key, value);
 }
index 1ba441f3577f3a8fe85b934aadb1a878addd08c0..ab20825b8f56e48029de944c7839b3c2895e2b81 100644 (file)
@@ -83,7 +83,7 @@ typedef struct {
   unsigned int magic;
   unsigned int num;
   nns_edge_raw_data_s data[NNS_EDGE_DATA_LIMIT];
-  GHashTable *info_table;
+  nns_edge_metadata_s metadata;
 } nns_edge_data_s;
 
 /**
index 995177bbd3fecd6ba6ed5dbf7b6cf94039e44038..c5a2b15e817ede93b775f7a91a17c7b702681ac0 100644 (file)
@@ -968,6 +968,7 @@ nns_edge_create_handle (const char *id, nns_edge_connect_type_e connect_type,
   eh->host = nns_edge_strdup ("localhost");
   eh->port = 0;
   eh->flags = flags;
+  nns_edge_metadata_init (&eh->meta);
 
   /* Connection data for each client ID. */
   eh->conn_table = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL,
@@ -1071,6 +1072,7 @@ nns_edge_release_handle (nns_edge_h edge_h)
   g_hash_table_destroy (eh->conn_table);
   eh->conn_table = NULL;
 
+  nns_edge_metadata_free (&eh->meta);
   SAFE_FREE (eh->id);
   SAFE_FREE (eh->topic);
   SAFE_FREE (eh->host);
@@ -1412,8 +1414,7 @@ nns_edge_set_info (nns_edge_h edge_h, const char *key, const char *value)
     nns_edge_loge ("Cannot update %s.", key);
     ret = NNS_EDGE_ERROR_INVALID_PARAMETER;
   } else {
-    nns_edge_logw ("Failed to set edge info. Unknown key: %s", key);
-    ret = NNS_EDGE_ERROR_INVALID_PARAMETER;
+    ret = nns_edge_metadata_set (&eh->meta, key, value);
   }
 
   nns_edge_unlock (eh);
@@ -1475,8 +1476,7 @@ nns_edge_get_info (nns_edge_h edge_h, const char *key, char **value)
       *value = nns_edge_strdup_printf ("%ld", (long int) eh->client_id);
     }
   } else {
-    nns_edge_logw ("Failed to get edge info. Unknown key: %s", key);
-    ret = NNS_EDGE_ERROR_INVALID_PARAMETER;
+    ret = nns_edge_metadata_get (&eh->meta, key, value);
   }
 
   nns_edge_unlock (eh);
index 9c433d6afc00e9a14946ef33ebf3549f0db32480..ffb670d839909fe483c6aa3fe00d582eeacef1a0 100644 (file)
@@ -36,6 +36,7 @@ typedef struct {
   char *dest_host; /**< destination IP address (broker or target device) */
   int dest_port; /**< destination port number (broker or target device) */
   int flags;
+  nns_edge_metadata_s meta;
 
   /* Edge event callback and user data */
   nns_edge_event_cb event_cb;