};
enum ast_module_load_result {
- AST_MODULE_LOAD_SUCCESS = 0, /*!< Module loaded and configured */
- AST_MODULE_LOAD_DECLINE = 1, /*!< Module is not configured */
- AST_MODULE_LOAD_SKIP = 2, /*!< Module was skipped for some reason */
- AST_MODULE_LOAD_FAILURE = -1, /*!< Module could not be loaded properly */
+ AST_MODULE_LOAD_SUCCESS = 0, /*!< Module loaded and configured */
+ AST_MODULE_LOAD_DECLINE = 1, /*!< Module is not configured */
+ AST_MODULE_LOAD_SKIP = 2, /*!< Module was skipped for some reason */
+ AST_MODULE_LOAD_PRIORITY = 3, /*!< Module is not loaded yet, but is added to prioity heap */
+ AST_MODULE_LOAD_FAILURE = -1, /*!< Module could not be loaded properly */
};
/*!
mod->flags.declined = 1;
break;
case AST_MODULE_LOAD_FAILURE:
- break;
- case AST_MODULE_LOAD_SKIP:
- /* modules should never return this value */
+ case AST_MODULE_LOAD_SKIP: /* modules should never return this value */
+ case AST_MODULE_LOAD_PRIORITY:
break;
}
if (resource_heap) {
ast_heap_push(resource_heap, mod);
- res = AST_MODULE_LOAD_SKIP;
+ res = AST_MODULE_LOAD_PRIORITY;
} else {
res = start_resource(mod);
}
goto done;
case AST_MODULE_LOAD_SKIP:
break;
+ case AST_MODULE_LOAD_PRIORITY:
+ AST_LIST_REMOVE_CURRENT(entry);
+ break;
}
}
AST_LIST_TRAVERSE_SAFE_END;
res = -1;
goto done;
case AST_MODULE_LOAD_SKIP:
+ case AST_MODULE_LOAD_PRIORITY:
break;
}
}