From: Lennart Poettering Date: Tue, 6 Apr 2010 00:39:16 +0000 (+0200) Subject: job: define job_type_is_redundant() to idenity unnecessary jobs X-Git-Tag: v1~659 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=593fbdd21e52c8c0ac249c5b6163761005af8463 job: define job_type_is_redundant() to idenity unnecessary jobs --- diff --git a/job.c b/job.c index e2354af3f..c4d2e7a11 100644 --- a/job.c +++ b/job.c @@ -265,6 +265,45 @@ bool job_type_is_conflicting(JobType a, JobType b) { return (a == JOB_STOP) != (b == JOB_STOP); } +bool job_type_is_redundant(JobType a, UnitActiveState b) { + switch (a) { + + case JOB_START: + return + b == UNIT_ACTIVE || + b == UNIT_ACTIVE_RELOADING; + + case JOB_STOP: + return + b == UNIT_INACTIVE; + + case JOB_VERIFY_ACTIVE: + return + b == UNIT_ACTIVE || + b == UNIT_ACTIVE_RELOADING; + + case JOB_RELOAD: + return + b == UNIT_ACTIVE_RELOADING; + + case JOB_RELOAD_OR_START: + return + b == UNIT_ACTIVATING || + b == UNIT_ACTIVE_RELOADING; + + case JOB_RESTART: + return + b == UNIT_ACTIVATING; + + case JOB_TRY_RESTART: + return + b == UNIT_ACTIVATING; + + default: + assert_not_reached("Invalid job type"); + } +} + bool job_is_runnable(Job *j) { Iterator i; Unit *other; diff --git a/job.h b/job.h index bfe20339e..5bea2948c 100644 --- a/job.h +++ b/job.h @@ -126,6 +126,7 @@ int job_type_merge(JobType *a, JobType b); bool job_type_is_mergeable(JobType a, JobType b); bool job_type_is_superset(JobType a, JobType b); bool job_type_is_conflicting(JobType a, JobType b); +bool job_type_is_redundant(JobType a, UnitActiveState b); bool job_is_runnable(Job *j);