| 1643 | } |
| 1644 | |
| 1645 | static cbm_daemon_application_job_t *application_job_subscribe( |
| 1646 | cbm_daemon_application_t *application, const char *project_key, const char *root_path, |
| 1647 | const char *args_json, application_job_subscribe_status_t *status_out) { |
| 1648 | application_jobs_reap_completed(application); |
| 1649 | cbm_mutex_lock(&application->mutex); |
| 1650 | cbm_daemon_application_job_t *job = application_job_subscribe_locked( |
| 1651 | application, project_key, root_path, args_json, status_out); |
| 1652 | cbm_mutex_unlock(&application->mutex); |
| 1653 | return job; |
| 1654 | } |
| 1655 | |
| 1656 | static void application_job_unsubscribe_locked(cbm_daemon_application_job_t *job) { |
| 1657 | if (!job || job->subscribers == 0) { |
no test coverage detected