core: introduce io.systemd.Job interface with List, Cancel, and ClearAll methods

Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ivan Kruglov
2026-05-19 11:05:55 +02:00
parent 7416bdf8f1
commit 3941dff8b4
4 changed files with 246 additions and 2 deletions
+31 -2
View File
@@ -58,10 +58,37 @@ SD_VARLINK_DEFINE_STRUCT_TYPE(
Job,
VARLINK_DEFINE_JOB_FIELDS(FIELD));
static SD_VARLINK_DEFINE_ERROR(
NoSuchJob,
SD_VARLINK_DEFINE_FIELD(parameter, SD_VARLINK_STRING, SD_VARLINK_NULLABLE));
static SD_VARLINK_DEFINE_METHOD_FULL(
List,
SD_VARLINK_SUPPORTS_MORE,
SD_VARLINK_FIELD_COMMENT("If non-null, filter by job ID"),
SD_VARLINK_DEFINE_INPUT(id, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
SD_VARLINK_FIELD_COMMENT("If non-null, filter by unit name"),
SD_VARLINK_DEFINE_INPUT(unit, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
VARLINK_DEFINE_JOB_FIELDS(OUTPUT));
static SD_VARLINK_DEFINE_METHOD(
Cancel,
SD_VARLINK_FIELD_COMMENT("The job ID to cancel"),
SD_VARLINK_DEFINE_INPUT(id, SD_VARLINK_INT, 0));
static SD_VARLINK_DEFINE_METHOD(
ClearAll);
SD_VARLINK_DEFINE_INTERFACE(
io_systemd_Job,
"io.systemd.Job",
SD_VARLINK_INTERFACE_COMMENT("Job-related types for the systemd service manager."),
SD_VARLINK_INTERFACE_COMMENT("Job management interface for the systemd service manager."),
SD_VARLINK_SYMBOL_COMMENT("List queued jobs"),
&vl_method_List,
SD_VARLINK_SYMBOL_COMMENT("Cancel a specific job"),
&vl_method_Cancel,
SD_VARLINK_SYMBOL_COMMENT("Cancel all pending jobs"),
&vl_method_ClearAll,
SD_VARLINK_SYMBOL_COMMENT("Job type"),
&vl_type_JobType,
SD_VARLINK_SYMBOL_COMMENT("Job state"),
@@ -69,4 +96,6 @@ SD_VARLINK_DEFINE_INTERFACE(
SD_VARLINK_SYMBOL_COMMENT("Job result"),
&vl_type_JobResult,
SD_VARLINK_SYMBOL_COMMENT("A job object"),
&vl_type_Job);
&vl_type_Job,
SD_VARLINK_SYMBOL_COMMENT("The specified job does not exist"),
&vl_error_NoSuchJob);