int pmix_bfrop_pack_app(pmix_buffer_t *buffer, const void *src, int32_t num_vals, pmix_data_type_t type) { pmix_app_t *app; int32_t i, j, nvals; int ret; app = (pmix_app_t *) src; for (i = 0; i < num_vals; ++i) { if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_string(buffer, &app[i].cmd, 1, PMIX_STRING))) { return ret; } /* argv */ if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_int(buffer, &app[i].argc, 1, PMIX_INT))) { return ret; } for (j=0; j < app->argc; j++) { if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_string(buffer, &app[i].argv[j], 1, PMIX_STRING))) { return ret; } } /* env */ nvals = pmix_argv_count(app[i].env); if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_int32(buffer, &nvals, 1, PMIX_INT32))) { return ret; } for (j=0; j < nvals; j++) { if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_string(buffer, &app[i].env[j], 1, PMIX_STRING))) { return ret; } } /* maxprocs */ if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_int(buffer, &app[i].maxprocs, 1, PMIX_INT))) { return ret; } /* info array */ if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_sizet(buffer, &app[i].ninfo, 1, PMIX_SIZE))) { return ret; } if (0 < app[i].ninfo) { if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_info(buffer, app[i].info, app[i].ninfo, PMIX_INFO))) { return ret; } } } return PMIX_SUCCESS; }
int pmix_bfrop_pack_bo(pmix_buffer_t *buffer, const void *src, int32_t num_vals, pmix_data_type_t type) { int ret; int i; pmix_byte_object_t *bo; bo = (pmix_byte_object_t*)src; for (i=0; i < num_vals; i++) { if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_sizet(buffer, &bo[i].size, 1, PMIX_SIZE))) { return ret; } if (0 < bo[i].size) { if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_byte(buffer, bo[i].bytes, bo[i].size, PMIX_BYTE))) { return ret; } } } return PMIX_SUCCESS; }
int pmix_bfrop_pack_proc(pmix_buffer_t *buffer, const void *src, int32_t num_vals, pmix_data_type_t type) { pmix_proc_t *proc; int32_t i; int ret; proc = (pmix_proc_t *) src; for (i = 0; i < num_vals; ++i) { char *ptr = proc[i].nspace; if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_string(buffer, &ptr, 1, PMIX_STRING))) { return ret; } if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_sizet(buffer, &proc[i].rank, 1, PMIX_INT))) { return ret; } } return PMIX_SUCCESS; }
int pmix_bfrop_pack_modex(pmix_buffer_t *buffer, const void *src, int32_t num_vals, pmix_data_type_t type) { pmix_modex_data_t *ptr; int32_t i; int ret; ptr = (pmix_modex_data_t *) src; for (i = 0; i < num_vals; ++i) { if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_sizet(buffer, &ptr[i].size, 1, PMIX_SIZE))) { return ret; } if( 0 < ptr[i].size){ if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_byte(buffer, ptr[i].blob, ptr[i].size, PMIX_UINT8))) { return ret; } } } return PMIX_SUCCESS; }
int pmix_bfrop_pack_buf(pmix_buffer_t *buffer, const void *src, int32_t num_vals, pmix_data_type_t type) { pmix_buffer_t **ptr; int32_t i; int ret; ptr = (pmix_buffer_t **) src; for (i = 0; i < num_vals; ++i) { /* pack the number of bytes */ if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_sizet(buffer, &ptr[i]->bytes_used, 1, PMIX_SIZE))) { return ret; } /* pack the bytes */ if (0 < ptr[i]->bytes_used) { if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_byte(buffer, ptr[i]->base_ptr, ptr[i]->bytes_used, PMIX_BYTE))) { return ret; } } } return PMIX_SUCCESS; }
int pmix_bfrop_pack_array(pmix_buffer_t *buffer, const void *src, int32_t num_vals, pmix_data_type_t type) { pmix_info_array_t *ptr; int32_t i; int ret; ptr = (pmix_info_array_t *) src; for (i = 0; i < num_vals; ++i) { /* pack the size */ if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_sizet(buffer, &ptr[i].size, 1, PMIX_SIZE))) { return ret; } if (0 < ptr[i].size) { /* pack the values */ if (PMIX_SUCCESS != (ret = pmix_bfrop_pack_info(buffer, ptr[i].array, ptr[i].size, PMIX_INFO))) { return ret; } } } return PMIX_SUCCESS; }