static int wait_job_complete (flux_t h) { int rc = -1; sig_flux_h = h; wjctx_t *ctx = getctx (h); if (signal (SIGINT, sig_handler) == SIG_ERR) goto done; if (jsc_notify_status (h, waitjob_cb, (void *)h) != 0) { flux_log (h, LOG_ERR, "failed to register a waitjob CB"); } /* once jsc_notify_status is returned, all of JSC events * will be queued and delivered. It is safe to signal * readiness. */ if (ctx->start) touch_outfile (ctx->start); if (complete_job (ctx)) { if (ctx->complete) touch_outfile (ctx->complete); flux_log (ctx->h, LOG_INFO, "wait_job_complete: completion detected"); } if (flux_reactor_run (flux_get_reactor (h), 0) < 0) { flux_log (h, LOG_ERR, "error in flux_reactor_run"); goto done; } rc = 0; done: return rc; }
static int handle_notify_req (flux_t h, const char *ofn) { jstatctx_t *ctx = NULL; sig_flux_h = h; if (signal (SIGINT, sig_handler) == SIG_ERR) return -1; ctx = getctx (h); ctx->op = (ofn)? open_test_outfile (ofn) : stdout; if (jsc_notify_status (h, job_status_cb, (void *)h) != 0) { flux_log (h, LOG_ERR, "failed to reg a job status change CB"); return -1; } if (flux_reactor_run (flux_get_reactor (h), 0) < 0) flux_log (h, LOG_ERR, "error in flux_reactor_run"); return 0; }