// Increment the number of running jobs
daemon->running_jobs++;
+ // XXX For now, we always enabled log streaming
+ pakfire_job_launch_log_stream(job);
+
ERROR:
if (job)
pakfire_job_unref(job);
daemon->stats_timer = NULL;
}
+ // Turn off log streaming for all jobs
+ for (int i = 0; i < MAX_JOBS; i++) {
+ if (daemon->jobs[i])
+ pakfire_job_terminate_log_stream(daemon->jobs[i]);
+ }
+
return 0;
}
return pakfire_job_parent(job);
}
-#if 0
-int pakfire_job_send_log_line(struct pakfire_job* job,
+static int pakfire_job_send_log_line(struct pakfire_job* job,
int priority, const char* line, size_t length) {
struct json_object* message = NULL;
struct json_object* data = NULL;
goto ERROR;
}
+ // Add the job ID
+ r = pakfire_json_add_string(message, "job_id", job->id);
+ if (r < 0)
+ goto ERROR;
+
// Set type
r = pakfire_json_add_string(message, "type", "log");
if (r)
if (r)
goto ERROR;
- // Serialize to string
- const char* m = json_object_to_json_string_length(message,
- JSON_C_TO_STRING_SPACED | JSON_C_TO_STRING_PRETTY, &length);
-
// Send the message
- r = pakfire_xfer_send_message(job->control, m, length);
- if (r) {
+ r = pakfire_daemon_send_message(job->daemon, message);
+ if (r < 0) {
ERROR(job->ctx, "Could not send log message: %s\n", strerror(-r));
goto ERROR;
}
int priority;
int r;
- // Do nothing if we are not connected
- if (!job->control)
- return 0;
-
// Send as many log messages as possible
for (;;) {
// Try to dequeue a line from the log buffer
return 0;
}
-static int pakfire_job_terminate_log_stream(struct pakfire_job* job) {
- // Disable log streaming
- if (job->log.stream) {
- sd_event_source_unref(job->log.stream);
- job->log.stream = NULL;
- }
-
- return 0;
-}
-
-static int pakfire_job_launch_log_stream(struct pakfire_job* job) {
+int pakfire_job_launch_log_stream(struct pakfire_job* job) {
int r;
// Make sure the previous event is actually gone
return 0;
}
-#endif
+
+int pakfire_job_terminate_log_stream(struct pakfire_job* job) {
+ // Disable log streaming
+ if (job->log.stream) {
+ sd_event_source_unref(job->log.stream);
+ job->log.stream = NULL;
+ }
+
+ return 0;
+}
int pakfire_job_create(struct pakfire_job** job, struct pakfire_ctx* ctx,
struct pakfire_daemon* daemon, json_object* data) {