Wrap g_hash_table_remove() with ms_node_remove_from_table()
[platform/core/api/mediastreamer.git] / src / media_streamer_node.c
index 11aac47..f8a8826 100644 (file)
@@ -1053,7 +1053,22 @@ int ms_node_insert_into_table(GHashTable *nodes_table, media_streamer_node_s *no
        return MEDIA_STREAMER_ERROR_NONE;
 }
 
-void ms_node_remove_from_table(void *data)
+int ms_node_remove_from_table(GHashTable *nodes_table, media_streamer_node_s *node)
+{
+       ms_retvm_if(nodes_table == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "nodes_table is NULL");
+       ms_retvm_if(node == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "node is NULL");
+
+       /* Removal element of this node from bin will be performed
+        * in the callback - ms_node_remove_from_table_cb(). */
+       if (!g_hash_table_remove(nodes_table, (gpointer) node->name)) {
+               ms_error("Failed to remove node [%s] from table", node->name);
+               return MEDIA_STREAMER_ERROR_INVALID_OPERATION;
+       }
+
+       return MEDIA_STREAMER_ERROR_NONE;
+}
+
+void ms_node_remove_from_table_cb(void *data)
 {
        media_streamer_node_s *node = (media_streamer_node_s *) data;
 
@@ -1067,11 +1082,10 @@ void ms_node_remove_from_table(void *data)
                ms_bin_remove_element(node->gst_element);
                ms_info("Node [%s] removed from Media Streamer", node->name);
        } else {
-               ms_error("Error: Node [%s] remove failed", node->name);
+               ms_error("Failed to unlink element of node [%s]", node->name);
        }
 
        ms_debug_fleave();
-
 }
 
 static gboolean __ms_src_need_typefind(GstPad *src_pad)