int orte_rml_base_parse_uris(const char* uri, orte_process_name_t* peer, char*** uris) { int rc; /* parse the process name */ char* cinfo = strdup(uri); char* ptr = strchr(cinfo, ';'); if(NULL == ptr) { ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM); free(cinfo); return ORTE_ERR_BAD_PARAM; } *ptr = '\0'; ptr++; if (ORTE_SUCCESS != (rc = orte_util_convert_string_to_process_name(peer, cinfo))) { ORTE_ERROR_LOG(rc); free(cinfo); return rc; } if (NULL != uris) { /* parse the remainder of the string into an array of uris */ *uris = opal_argv_split(ptr, ';'); } free(cinfo); return ORTE_SUCCESS; }
static int _convert_string_to_process_name(opal_process_name_t *name, const char* name_string) { return orte_util_convert_string_to_process_name(name, name_string); }
int orte_sstore_base_extract_global_metadata(orte_sstore_base_global_snapshot_info_t *global_snapshot) { int ret, exit_status = ORTE_SUCCESS; FILE *metadata = NULL; char * token = NULL; char * value = NULL; orte_process_name_t proc; opal_list_item_t* item = NULL; orte_sstore_base_local_snapshot_info_t *vpid_snapshot = NULL; /* * Cleanup the structure a bit, so we can refresh it below */ while (NULL != (item = opal_list_remove_first(&global_snapshot->local_snapshots))) { OBJ_RELEASE(item); } if( NULL != global_snapshot->start_time ) { free( global_snapshot->start_time ); global_snapshot->start_time = NULL; } if( NULL != global_snapshot->end_time ) { free( global_snapshot->end_time ); global_snapshot->end_time = NULL; } /* * Open the metadata file */ if (NULL == (metadata = fopen(global_snapshot->metadata_filename, "r")) ) { opal_output(orte_sstore_base_output, "sstore:base:extract_global_metadata() Unable to open the file (%s)\n", global_snapshot->metadata_filename); ORTE_ERROR_LOG(ORTE_ERROR); exit_status = ORTE_ERROR; goto cleanup; } /* * Seek to the sequence number requested */ if( ORTE_SUCCESS != (ret = orte_sstore_base_metadata_seek_to_seq_num(metadata, global_snapshot->seq_num))) { ORTE_ERROR_LOG(ORTE_ERROR); exit_status = ORTE_ERROR; goto cleanup; } /* * Extract each token and make the records */ do { if( ORTE_SUCCESS != orte_sstore_base_metadata_read_next_token(metadata, &token, &value) ) { break; } if(0 == strncmp(token, SSTORE_METADATA_GLOBAL_SNAP_SEQ_STR, strlen(SSTORE_METADATA_GLOBAL_SNAP_SEQ_STR)) || 0 == strncmp(token, SSTORE_METADATA_INTERNAL_MIG_SEQ_STR, strlen(SSTORE_METADATA_INTERNAL_MIG_SEQ_STR)) ) { break; } if( 0 == strncmp(token, SSTORE_METADATA_INTERNAL_PROCESS_STR, strlen(SSTORE_METADATA_INTERNAL_PROCESS_STR)) ) { orte_util_convert_string_to_process_name(&proc, value); /* Not the first process, so append it to the list */ if( NULL != vpid_snapshot) { opal_list_append(&global_snapshot->local_snapshots, &(vpid_snapshot->super)); } vpid_snapshot = OBJ_NEW(orte_sstore_base_local_snapshot_info_t); vpid_snapshot->ss_handle = global_snapshot->ss_handle; vpid_snapshot->process_name.jobid = proc.jobid; vpid_snapshot->process_name.vpid = proc.vpid; ORTE_EPOCH_SET(vpid_snapshot->process_name.epoch,proc.epoch); } else if(0 == strncmp(token, SSTORE_METADATA_LOCAL_CRS_COMP_STR, strlen(SSTORE_METADATA_LOCAL_CRS_COMP_STR))) { vpid_snapshot->crs_comp = strdup(value); } else if(0 == strncmp(token, SSTORE_METADATA_LOCAL_COMPRESS_COMP_STR, strlen(SSTORE_METADATA_LOCAL_COMPRESS_COMP_STR))) { vpid_snapshot->compress_comp = strdup(value); } else if(0 == strncmp(token, SSTORE_METADATA_LOCAL_COMPRESS_POSTFIX_STR, strlen(SSTORE_METADATA_LOCAL_COMPRESS_POSTFIX_STR))) { vpid_snapshot->compress_postfix = strdup(value); } else if(0 == strncmp(token, SSTORE_METADATA_INTERNAL_TIME_STR, strlen(SSTORE_METADATA_INTERNAL_TIME_STR)) ) { if( NULL == global_snapshot->start_time) { global_snapshot->start_time = strdup(value); } else { global_snapshot->end_time = strdup(value); } } else if(0 == strncmp(token, SSTORE_METADATA_GLOBAL_AMCA_PARAM_STR, strlen(SSTORE_METADATA_GLOBAL_AMCA_PARAM_STR))) { global_snapshot->amca_param = strdup(value); } } while(0 == feof(metadata) ); /* Append the last item */ if( NULL != vpid_snapshot) { opal_list_append(&global_snapshot->local_snapshots, &(vpid_snapshot->super)); } cleanup: if( NULL != metadata ) { fclose(metadata); metadata = NULL; } if( NULL != value ) { free(value); value = NULL; } if( NULL != token ) { free(token); token = NULL; } return exit_status; }