client: Refactor node listing functions to use list_of_nodes()
authorMartin Schwenke <martin@meltin.net>
Tue, 19 Feb 2013 03:30:50 +0000 (14:30 +1100)
committerAmitay Isaacs <amitay@gmail.com>
Wed, 20 Feb 2013 03:44:38 +0000 (14:44 +1100)
This reduces repetition.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Pair-programmed-with: Amitay Isaacs <amitay@gmail.com>

client/ctdb_client.c

index 74bfb59a77caeaa5e964654b30030f7039cb121d..d2cf0f69e34a56adeb2d16923086d06fb573ec92 100644 (file)
@@ -3494,33 +3494,8 @@ uint32_t *list_of_active_nodes(struct ctdb_context *ctdb,
                                TALLOC_CTX *mem_ctx,
                                bool include_self)
 {
-       int i, j, num_nodes;
-       uint32_t *nodes;
-
-       for (i=num_nodes=0;i<node_map->num;i++) {
-               if (node_map->nodes[i].flags & NODE_FLAGS_INACTIVE) {
-                       continue;
-               }
-               if (node_map->nodes[i].pnn == ctdb->pnn && !include_self) {
-                       continue;
-               }
-               num_nodes++;
-       } 
-
-       nodes = talloc_array(mem_ctx, uint32_t, num_nodes);
-       CTDB_NO_MEMORY_FATAL(ctdb, nodes);
-
-       for (i=j=0;i<node_map->num;i++) {
-               if (node_map->nodes[i].flags & NODE_FLAGS_INACTIVE) {
-                       continue;
-               }
-               if (node_map->nodes[i].pnn == ctdb->pnn && !include_self) {
-                       continue;
-               }
-               nodes[j++] = node_map->nodes[i].pnn;
-       } 
-
-       return nodes;
+       return list_of_nodes(ctdb, node_map, mem_ctx, NODE_FLAGS_INACTIVE,
+                            include_self ? -1 : ctdb->pnn);
 }
 
 uint32_t *list_of_active_nodes_except_pnn(struct ctdb_context *ctdb,
@@ -3528,33 +3503,7 @@ uint32_t *list_of_active_nodes_except_pnn(struct ctdb_context *ctdb,
                                TALLOC_CTX *mem_ctx,
                                uint32_t pnn)
 {
-       int i, j, num_nodes;
-       uint32_t *nodes;
-
-       for (i=num_nodes=0;i<node_map->num;i++) {
-               if (node_map->nodes[i].flags & NODE_FLAGS_INACTIVE) {
-                       continue;
-               }
-               if (node_map->nodes[i].pnn == pnn) {
-                       continue;
-               }
-               num_nodes++;
-       } 
-
-       nodes = talloc_array(mem_ctx, uint32_t, num_nodes);
-       CTDB_NO_MEMORY_FATAL(ctdb, nodes);
-
-       for (i=j=0;i<node_map->num;i++) {
-               if (node_map->nodes[i].flags & NODE_FLAGS_INACTIVE) {
-                       continue;
-               }
-               if (node_map->nodes[i].pnn == pnn) {
-                       continue;
-               }
-               nodes[j++] = node_map->nodes[i].pnn;
-       } 
-
-       return nodes;
+       return list_of_nodes(ctdb, node_map, mem_ctx, NODE_FLAGS_INACTIVE, pnn);
 }
 
 uint32_t *list_of_connected_nodes(struct ctdb_context *ctdb,
@@ -3562,33 +3511,8 @@ uint32_t *list_of_connected_nodes(struct ctdb_context *ctdb,
                                TALLOC_CTX *mem_ctx,
                                bool include_self)
 {
-       int i, j, num_nodes;
-       uint32_t *nodes;
-
-       for (i=num_nodes=0;i<node_map->num;i++) {
-               if (node_map->nodes[i].flags & NODE_FLAGS_DISCONNECTED) {
-                       continue;
-               }
-               if (node_map->nodes[i].pnn == ctdb->pnn && !include_self) {
-                       continue;
-               }
-               num_nodes++;
-       } 
-
-       nodes = talloc_array(mem_ctx, uint32_t, num_nodes);
-       CTDB_NO_MEMORY_FATAL(ctdb, nodes);
-
-       for (i=j=0;i<node_map->num;i++) {
-               if (node_map->nodes[i].flags & NODE_FLAGS_DISCONNECTED) {
-                       continue;
-               }
-               if (node_map->nodes[i].pnn == ctdb->pnn && !include_self) {
-                       continue;
-               }
-               nodes[j++] = node_map->nodes[i].pnn;
-       } 
-
-       return nodes;
+       return list_of_nodes(ctdb, node_map, mem_ctx, NODE_FLAGS_DISCONNECTED,
+                            include_self ? -1 : ctdb->pnn);
 }
 
 /*