static mcon_collection* mongo_filter_candidates_by_tagset(mongo_con_manager *manager, mcon_collection *candidates, mongo_read_preference_tagset *tagset) { int i; mcon_collection *tmp; tmp = mcon_init_collection(sizeof(mongo_connection*)); for (i = 0; i < candidates->count; i++) { if (candidate_matches_tags(manager, (mongo_connection *) candidates->data[i], tagset)) { mcon_collection_add(tmp, candidates->data[i]); } } return tmp; }
static mcon_collection* mongo_filter_candidates_by_tagset(mongo_con_manager *manager, mcon_collection *candidates, mongo_read_preference_tagset *tagset, int rp_type) { int i; mcon_collection *tmp; tmp = mcon_init_collection(sizeof(mongo_connection*)); for (i = 0; i < candidates->count; i++) { if (rp_type == MONGO_RP_PRIMARY_PREFERRED && (((mongo_connection *) candidates->data[i])->connection_type == MONGO_NODE_PRIMARY)) { mongo_manager_log(manager, MLOG_RS, MLOG_FINE, "candidate_matches_tags: added primary regardless of tags: %s", ((mongo_connection *) candidates->data[i])->hash); mcon_collection_add(tmp, candidates->data[i]); } else if (candidate_matches_tags(manager, (mongo_connection *) candidates->data[i], tagset)) { mcon_collection_add(tmp, candidates->data[i]); } } return tmp; }