32 explicit JobSystem(std::shared_ptr<core::ports::diagnostics::IErrorReporter> errorReporter,
33 std::size_t workers = 0);
88 void fail(
const JobId&
id,
const std::string& error);
101 [[nodiscard]] std::shared_ptr<std::atomic<bool>>
cancelFlag(
const JobId&
id)
const;
108 [[nodiscard]] std::shared_ptr<std::atomic<bool>>
pauseFlag(
const JobId&
id)
const;
169 std::unique_ptr<Impl> impl_;
Defines shared job identifiers, states, events, and snapshots.
void cancel(const JobId &id)
Cancel a job.
JobSystem & operator=(JobSystem &&other) noexcept
Move-assign a job system facade.
std::shared_ptr< std::atomic< bool > > cancelFlag(const JobId &id) const
Retrieve a job cancellation flag.
void resume(const JobId &id)
Resume a paused job.
JobSystem(std::shared_ptr< core::ports::diagnostics::IErrorReporter > errorReporter, std::size_t workers=0)
Create a generic job system.
~JobSystem()
Destroy the job system.
void start(const JobId &id)
Mark a job as running.
void fail(const JobId &id, const std::string &error)
Mark a job as failed.
void pause(const JobId &id)
Pause a running job.
void unsubscribe(const JobId &id, SubscriptionId subId)
Unsubscribe from job events.
JobSystem(JobSystem &&other) noexcept
Move a job system facade.
JobSystem(const JobSystem &)=delete
Copying a job system is disabled.
JobSystem & operator=(const JobSystem &)=delete
Copy-assigning a job system is disabled.
void shutdown()
Shut down the job system.
void publish(const JobEvent &event)
Publish a job event to subscribers and update its snapshot.
std::shared_ptr< std::atomic< bool > > pauseFlag(const JobId &id) const
Retrieve a job pause flag.
void finish(const JobId &id)
Mark a job as finished.
SlotLimiter & slotLimiter()
Access the shared slot limiter.
std::optional< JobSnapshot > snapshot(const JobId &id) const
Retrieve a job snapshot.
JobId submit(JobKind kind=JobKind::Generic)
Create a new tracked job.
Scheduler & scheduler()
Access the shared worker scheduler.
SubscriptionId subscribe(const JobId &id, JobEventCallback cb)
Subscribe to job events.
Runs background tasks on a bounded worker queue.
Limits concurrent access to a bounded number of slots.
Port for reporting structured diagnostic error events.
std::uint64_t SubscriptionId
Identifier for a job event subscription.
std::string JobId
Stable identifier for one tracked job.
JobKind
Classifies the high-level type of job.
std::function< void(const JobEvent &)> JobEventCallback
Callback invoked for published job events.
Event emitted when a job changes state or progress.