#include "src/include/pmix_config.h"
#include "src/include/pmix_globals.h"
#include "src/util/pmix_argv.h"
#include "src/util/pmix_show_help.h"
#include "ptl_tool.h"
#include "src/mca/ptl/base/base.h"
static pmix_status_t setup_listener(pmix_info_t info[], size_t ninfo);
pmix_ptl_module_t pmix_ptl_tool_module = {
.name = "tool",
.connect_to_peer = pmix_ptl_base_connect_to_peer,
.setup_fork = pmix_ptl_base_setup_fork,
.setup_listener = setup_listener
};
static pmix_status_t setup_listener(pmix_info_t info[], size_t ninfo)
{
pmix_status_t rc;
char **clnup = NULL, *cptr = NULL;
pmix_info_t dir;
rc = pmix_ptl_base_setup_listener(info, ninfo);
if (PMIX_SUCCESS != rc) {
return rc;
}
if (pmix_globals.connected) {
if (NULL != pmix_ptl_base.nspace_filename) {
PMIx_Argv_append_nosize(&clnup, pmix_ptl_base.nspace_filename);
}
if (NULL != pmix_ptl_base.session_filename) {
PMIx_Argv_append_nosize(&clnup, pmix_ptl_base.session_filename);
}
if (NULL != clnup) {
cptr = PMIx_Argv_join(clnup, ',');
PMIx_Argv_free(clnup);
PMIX_INFO_LOAD(&dir, PMIX_REGISTER_CLEANUP, cptr, PMIX_STRING);
free(cptr);
PMIx_Job_control_nb(&pmix_globals.myid, 1, &dir, 1, NULL, NULL);
PMIX_INFO_DESTRUCT(&dir);
}
}
return PMIX_SUCCESS;
}