Allow callers to dstore.open to not request a specific list of desired components, but just take the highest priority one that is available
Этот коммит содержится в:
родитель
1169d4bfa0
Коммит
27be73c6fb
@ -34,29 +34,49 @@ int opal_dstore_base_open(const char *name, char* desired_components, opal_list_
|
|||||||
int i;
|
int i;
|
||||||
mca_base_component_list_item_t* cli;
|
mca_base_component_list_item_t* cli;
|
||||||
char** tokens;
|
char** tokens;
|
||||||
tokens = opal_argv_split(desired_components, ',');
|
|
||||||
for (i = 0; NULL != tokens[i]; i++) {
|
if (NULL != desired_components) {
|
||||||
OPAL_LIST_FOREACH(cli, &opal_dstore_base.available_components, mca_base_component_list_item_t) {
|
tokens = opal_argv_split(desired_components, ',');
|
||||||
if (0 == strncmp(tokens[i], cli->cli_component->mca_component_name, strlen(tokens[i]))) {
|
for (i = 0; NULL != tokens[i]; i++) {
|
||||||
if (NULL != ((opal_dstore_base_component_t*)cli->cli_component)->create_handle && NULL != (mod = ((opal_dstore_base_component_t*)cli->cli_component)->create_handle(attrs))) {
|
OPAL_LIST_FOREACH(cli, &opal_dstore_base.available_components, mca_base_component_list_item_t) {
|
||||||
/* have our module, so create a new dstore_handle */
|
if (0 == strncmp(tokens[i], cli->cli_component->mca_component_name, strlen(tokens[i]))) {
|
||||||
hdl = OBJ_NEW(opal_dstore_handle_t);
|
if (NULL != ((opal_dstore_base_component_t*)cli->cli_component)->create_handle && NULL != (mod = ((opal_dstore_base_component_t*)cli->cli_component)->create_handle(attrs))) {
|
||||||
if (NULL != name) {
|
/* have our module, so create a new dstore_handle */
|
||||||
hdl->name = strdup(name);
|
hdl = OBJ_NEW(opal_dstore_handle_t);
|
||||||
|
if (NULL != name) {
|
||||||
|
hdl->name = strdup(name);
|
||||||
|
}
|
||||||
|
hdl->module = mod;
|
||||||
|
hdl->storage_component = (opal_dstore_base_component_t*)cli->cli_component;
|
||||||
|
if (0 > (index = opal_pointer_array_add(&opal_dstore_base.handles, hdl))) {
|
||||||
|
OPAL_ERROR_LOG(index);
|
||||||
|
OBJ_RELEASE(hdl);
|
||||||
|
}
|
||||||
|
opal_argv_free(tokens);
|
||||||
|
return index;
|
||||||
}
|
}
|
||||||
hdl->module = mod;
|
|
||||||
hdl->storage_component = (opal_dstore_base_component_t*)cli->cli_component;
|
|
||||||
if (0 > (index = opal_pointer_array_add(&opal_dstore_base.handles, hdl))) {
|
|
||||||
OPAL_ERROR_LOG(index);
|
|
||||||
OBJ_RELEASE(hdl);
|
|
||||||
}
|
|
||||||
opal_argv_free(tokens);
|
|
||||||
return index;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
opal_argv_free(tokens);
|
||||||
|
} else {
|
||||||
|
OPAL_LIST_FOREACH(cli, &opal_dstore_base.available_components, mca_base_component_list_item_t) {
|
||||||
|
if (NULL != ((opal_dstore_base_component_t*)cli->cli_component)->create_handle && NULL != (mod = ((opal_dstore_base_component_t*)cli->cli_component)->create_handle(attrs))) {
|
||||||
|
/* have our module, so create a new dstore_handle */
|
||||||
|
hdl = OBJ_NEW(opal_dstore_handle_t);
|
||||||
|
if (NULL != name) {
|
||||||
|
hdl->name = strdup(name);
|
||||||
|
}
|
||||||
|
hdl->module = mod;
|
||||||
|
hdl->storage_component = (opal_dstore_base_component_t*)cli->cli_component;
|
||||||
|
if (0 > (index = opal_pointer_array_add(&opal_dstore_base.handles, hdl))) {
|
||||||
|
OPAL_ERROR_LOG(index);
|
||||||
|
OBJ_RELEASE(hdl);
|
||||||
|
}
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
opal_argv_free(tokens);
|
|
||||||
|
|
||||||
/* if we get here, then we were unable to create a module
|
/* if we get here, then we were unable to create a module
|
||||||
* for this scope
|
* for this scope
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user