Esempio n. 1
0
int
_mongoc_read_prefs_score (const mongoc_read_prefs_t   *read_prefs,
                          const mongoc_cluster_node_t *node)
{
   bson_return_val_if_fail(read_prefs, -1);
   bson_return_val_if_fail(node, -1);

   if (!node->primary && !node->secondary) {
      /* recovering, arbiter, or removed: see RSOther and RSGhost in
       * the Server Discovery And Monitoring Spec */
      return -1;
   }

   switch (read_prefs->mode) {
   case MONGOC_READ_PRIMARY:
      return _mongoc_read_prefs_score_primary(read_prefs, node);
   case MONGOC_READ_PRIMARY_PREFERRED:
      return _mongoc_read_prefs_score_primary_preferred(read_prefs, node);
   case MONGOC_READ_SECONDARY:
      return _mongoc_read_prefs_score_secondary(read_prefs, node);
   case MONGOC_READ_SECONDARY_PREFERRED:
      return _mongoc_read_prefs_score_secondary_preferred(read_prefs, node);
   case MONGOC_READ_NEAREST:
      return _mongoc_read_prefs_score_nearest(read_prefs, node);
   default:
      BSON_ASSERT(false);
      return -1;
   }
}
int
_mongoc_read_prefs_score (const mongoc_read_prefs_t   *read_prefs,
                          const mongoc_cluster_node_t *node)
{
   bson_return_val_if_fail(read_prefs, -1);
   bson_return_val_if_fail(node, -1);

   switch (read_prefs->mode) {
   case MONGOC_READ_PRIMARY:
      return _mongoc_read_prefs_score_primary(read_prefs, node);
   case MONGOC_READ_PRIMARY_PREFERRED:
      return _mongoc_read_prefs_score_primary_preferred(read_prefs, node);
   case MONGOC_READ_SECONDARY:
      return _mongoc_read_prefs_score_secondary(read_prefs, node);
   case MONGOC_READ_SECONDARY_PREFERRED:
      return _mongoc_read_prefs_score_secondary_preferred(read_prefs, node);
   case MONGOC_READ_NEAREST:
      return _mongoc_read_prefs_score_nearest(read_prefs, node);
   default:
      BSON_ASSERT(false);
      return -1;
   }
}