|
tess 1.0.0
Performance-first tile and path simulation substrate
|
Backend-neutral experimental maintenance scheduler interface. More...
#include <tess/experimental/maintenance.h>
Public Member Functions | |
| virtual auto | schedule (MaintenanceTask &task) -> bool=0 |
| virtual auto | run_some (MaintenanceBudget budget) -> bool=0 |
| virtual auto | flush () -> bool=0 |
| Completes all reachable work; see the non-reentrant drain contract above. | |
| virtual auto | metrics () const noexcept -> MaintenanceMetrics=0 |
| virtual auto | has_pending () const noexcept -> bool=0 |
Backend-neutral experimental maintenance scheduler interface.
|
nodiscardpure virtual |
Completes all reachable work; see the non-reentrant drain contract above.
Implemented in tess::experimental::maintenance::DirtyBitScheduler, and tess::experimental::maintenance::ImmediateScheduler.
|
nodiscardpure virtualnoexcept |
Returns whether this backend currently retains reachable work.
Implemented in tess::experimental::maintenance::DirtyBitScheduler, and tess::experimental::maintenance::ImmediateScheduler.
|
nodiscardpure virtual |
Runs reachable work until the queue or supplied budget is exhausted.
Do not call this or flush() from MaintenanceTask::run(): queued backends serialize drains with a non-recursive lock. schedule() is the only reentrant scheduler operation supported from a running task.
Implemented in tess::experimental::maintenance::DirtyBitScheduler, and tess::experimental::maintenance::ImmediateScheduler.
|
nodiscardpure virtual |
Schedules derived-state work.
The task must outlive this scheduler or an explicit flush(). A false result reports bounded capacity exhaustion, incomplete backend setup, an unknown task identity, or a backend that cannot make progress; authoritative state must retain its dirty signal so a caller can retry.
Implemented in tess::experimental::maintenance::DirtyBitScheduler, and tess::experimental::maintenance::ImmediateScheduler.