int orte_sstore_central_app_set_attr(orte_sstore_base_handle_t handle, orte_sstore_base_key_t key, char *value) { int ret, exit_status = ORTE_SUCCESS; orte_sstore_central_app_snapshot_info_t *handle_info = NULL; char *key_str = NULL; OPAL_OUTPUT_VERBOSE((10, mca_sstore_central_component.super.output_handle, "sstore:central:(app): set_attr(%d = %s)", key, value)); if( NULL == value ) { ORTE_ERROR_LOG(ORTE_ERROR); exit_status = ORTE_ERROR; goto cleanup; } if( key >= SSTORE_METADATA_MAX ) { ORTE_ERROR_LOG(ORTE_ERROR); exit_status = ORTE_ERROR; goto cleanup; } /* * Lookup the handle */ handle_info = find_handle_info(handle); /* * Access metadata */ if( SSTORE_METADATA_LOCAL_CRS_COMP == key ) { if( NULL != handle_info->crs_comp ) { free(handle_info->crs_comp); } handle_info->crs_comp = strdup(value); } else if(SSTORE_METADATA_LOCAL_SKIP_CKPT == key ) { handle_info->ckpt_skipped = true; } else if( SSTORE_METADATA_LOCAL_MKDIR == key || SSTORE_METADATA_LOCAL_TOUCH == key ) { orte_sstore_base_convert_key_to_string(key, &key_str); if( ORTE_SUCCESS != (ret = metadata_write_str(handle_info, key_str, value))) { ORTE_ERROR_LOG(ret); exit_status = ret; goto cleanup; } } else { exit_status = ORTE_ERROR; goto cleanup; } cleanup: if( NULL != key_str ) { free(key_str); key_str = NULL; } return exit_status; }
int orte_sstore_central_global_set_attr(orte_sstore_base_handle_t handle, orte_sstore_base_key_t key, char *value) { int ret, exit_status = ORTE_SUCCESS; orte_sstore_central_global_snapshot_info_t *handle_info = NULL; char *key_str = NULL; OPAL_OUTPUT_VERBOSE((10, mca_sstore_central_component.super.output_handle, "sstore:central:(global): set_attr()")); /* * Lookup the handle */ handle_info = find_handle_info(handle); /* * Process key (Access metadata) */ if( key == SSTORE_METADATA_GLOBAL_MIGRATING ) { handle_info->migrating = true; } else { orte_sstore_base_convert_key_to_string(key, &key_str); if( NULL == key_str ) { ORTE_ERROR_LOG(ORTE_ERROR); exit_status = ORTE_ERROR; goto cleanup; } if( ORTE_SUCCESS != (ret = metadata_write_str(handle_info, key_str, value))) { ORTE_ERROR_LOG(ret); exit_status = ret; goto cleanup; } } cleanup: if( NULL != key_str ) { free(key_str); key_str = NULL; } return exit_status; }