[PATCH] icmap: Add func to test equality of two key values

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Jan Friesse <jfriesse@xxxxxxxxxx>
---
 exec/icmap.c             |   22 ++++++++++++++++++++++
 include/corosync/icmap.h |   13 +++++++++++++
 2 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/exec/icmap.c b/exec/icmap.c
index cfc49ca..337a560 100644
--- a/exec/icmap.c
+++ b/exec/icmap.c
@@ -396,6 +396,28 @@ static int icmap_item_eq(const struct icmap_item *item, const void *value, size_
 	return (0);
 }
 
+int icmap_key_value_eq(
+	const icmap_map_t map1,
+	const char *key_name1,
+	const icmap_map_t map2,
+	const char *key_name2)
+{
+	struct icmap_item *item1, *item2;
+
+	if (map1 == NULL || key_name1 == NULL || map2 == NULL || key_name2 == NULL) {
+		return (0);
+	}
+
+	item1 = qb_map_get(map1->qb_map, key_name1);
+	item2 = qb_map_get(map2->qb_map, key_name2);
+
+	if (item1 == NULL || item2 == NULL) {
+		return (0);
+	}
+
+	return (icmap_item_eq(item1, item2->value, item2->value_len, item2->type));
+}
+
 cs_error_t icmap_set_r(
 	const icmap_map_t map,
 	const char *key_name,
diff --git a/include/corosync/icmap.h b/include/corosync/icmap.h
index 8026c88..a952ef6 100644
--- a/include/corosync/icmap.h
+++ b/include/corosync/icmap.h
@@ -152,6 +152,19 @@ extern void icmap_fini_r(const icmap_map_t map);
 extern icmap_map_t icmap_get_global_map(void);
 
 /*
+ * Compare value of key with name key_name1 in map1 with key with name key_name2
+ * in map2. Two values must have same type, length and value to be considered equal.
+ * Function returns 0 when any of map1, key_name1, map2, key_name2 are NULL, or
+ * key_name is not found in map, or keys are not equal. != 0 is returned when
+ * values are equal.
+ */
+extern int icmap_key_value_eq(
+	const icmap_map_t map1,
+	const char *key_name1,
+	const icmap_map_t map2,
+	const char *key_name2);
+
+/*
  * Store value with value_len length and type as key_name name in global icmap.
  */
 extern cs_error_t icmap_set(
-- 
1.7.1

_______________________________________________
discuss mailing list
discuss@xxxxxxxxxxxx
http://lists.corosync.org/mailman/listinfo/discuss




[Index of Archives]     [Linux Clusters]     [Corosync Project]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]    [Yosemite Photos]    [Linux Kernel]     [Linux SCSI]     [X.Org]

  Powered by Linux