17#include <unordered_map>
32 explicit JobManager(std::shared_ptr<core::ports::diagnostics::IErrorReporter> errorReporter);
93 std::shared_ptr<std::atomic<bool>>
pauseFlag(
const JobId&
id)
const;
106 void fail(
const JobId&
id,
const std::string& error);
125 void prune(std::size_t maxJobs);
129 std::shared_ptr<std::atomic<bool>>
cancel;
130 std::shared_ptr<std::atomic<bool>>
pause;
131 std::unordered_map<SubscriptionId, JobEventCallback> subs;
133 mutable std::mutex m;
140 static JobId makeJobId();
142 static constexpr std::size_t kMaxJobs = 64;
144 std::unordered_map<JobId, std::shared_ptr<JobData>> jobs_;
145 std::deque<JobId> order_;
146 mutable std::mutex jobsMutex_;
147 std::shared_ptr<core::ports::diagnostics::IErrorReporter> errorReporter_;
Defines shared job identifiers, states, events, and snapshots.
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.
void start(const JobId &id)
Mark a job as running.
void cancel(const JobId &id)
Mark a job as canceled and set its cancellation flag.
void publish(const JobEvent &ev)
Publish an event to subscribers and update the stored snapshot.
void resume(const JobId &id)
Resume a paused job and clear its pause flag.
JobId submit(JobKind kind)
Create a tracked job in the pending state.
std::shared_ptr< std::atomic< bool > > cancelFlag(const JobId &id) const
Retrieve a job cancellation flag.
SubscriptionId subscribe(const JobId &id, JobEventCallback cb)
Subscribe to events for a job.
void fail(const JobId &id, const std::string &error)
Mark a job as failed.
void pause(const JobId &id)
Mark a running job as paused and set its pause flag.
void unsubscribe(const JobId &id, SubscriptionId subId)
Remove a job event subscription.
std::optional< JobSnapshot > snapshot(const JobId &id) const
Retrieve the latest state snapshot for a job.
JobManager(std::shared_ptr< core::ports::diagnostics::IErrorReporter > errorReporter)
Create a manager for generic job state and event delivery.
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.
Snapshot of the latest known job state.