55 , data_(
std::vector<uint8_t>())
56 , job_id_(next_job_id_.fetch_add(1,
std::memory_order_relaxed))
57 , enqueue_time_(
std::chrono::steady_clock::now())
83 job::job(
const std::vector<uint8_t>& data,
const std::string& name)
86 , job_id_(next_job_id_.fetch_add(1,
std::memory_order_relaxed))
87 , enqueue_time_(
std::chrono::steady_clock::now())
138 return common::error_info{
static_cast<int>(
error_code::not_implemented),
"job::do_work() must be implemented in derived class",
"thread_system"};
164 cancellation_token_ = token;
283 components_ = std::make_unique<job_components>();
301 ensure_components().on_complete = std::move(
callback);
318 ensure_components().on_error = std::move(
callback);
335 ensure_components().priority =
priority;
352 cancellation_token_ = token;
353 ensure_components().has_explicit_cancellation =
true;
370 ensure_components().retry = policy;
387 ensure_components().timeout = timeout;
492 if (
result.is_err() && components_->on_error)
494 components_->on_error(
result.error());
498 if (components_->on_complete)
500 components_->on_complete(
result);
Provides a mechanism for cooperative cancellation of operations.
A thread-safe job queue for managing and dispatching work items.
Represents a unit of work (task) to be executed, typically by a job queue.
auto get_priority() const -> job_priority
Gets the priority level of this job.
auto with_retry(const retry_policy &policy) -> job &
Attaches a retry policy to this job.
std::unique_ptr< job_components > components_
Composed components for this job.
virtual auto set_job_queue(const std::shared_ptr< job_queue > &job_queue) -> void
Associates this job with a specific job_queue.
auto ensure_components() -> job_components &
Ensures components_ is allocated (lazy initialization).
auto has_components() const -> bool
Checks if this job has any composed components.
auto with_on_error(std::function< void(const common::error_info &)> callback) -> job &
Attaches an error callback to this job.
virtual auto set_cancellation_token(const cancellation_token &token) -> void
Sets a cancellation token that can be used to cancel the job.
virtual ~job(void)
Virtual destructor for the job class to allow proper cleanup in derived classes.
virtual auto to_string(void) const -> std::string
Provides a string representation of the job for logging or debugging.
static std::atomic< std::uint64_t > next_job_id_
Static counter for generating unique job IDs.
auto with_timeout(std::chrono::milliseconds timeout) -> job &
Sets a timeout for job execution.
auto invoke_callbacks(const common::VoidResult &result) -> void
Invokes the completion callbacks if they are set.
virtual auto get_job_queue(void) const -> std::shared_ptr< job_queue >
Retrieves the job_queue associated with this job, if any.
auto with_priority(job_priority priority) -> job &
Sets the priority level for this job.
auto has_explicit_cancellation() const -> bool
Checks if this job has an explicit cancellation set via composition.
auto get_timeout() const -> std::optional< std::chrono::milliseconds >
Gets the timeout duration for this job.
virtual auto do_work(void) -> common::VoidResult
The core task execution method to be overridden by derived classes.
auto get_name(void) const -> std::string
Retrieves the name of this job.
cancellation_token cancellation_token_
The cancellation token associated with this job.
auto with_on_complete(std::function< void(common::VoidResult)> callback) -> job &
Attaches a completion callback to this job.
virtual auto get_cancellation_token() const -> cancellation_token
Gets the cancellation token associated with this job.
auto get_retry_policy() const -> std::optional< retry_policy >
Gets the retry policy of this job.
job(const std::string &name="job")
Constructs a new job with an optional human-readable name.
auto with_cancellation(const cancellation_token &token) -> job &
Attaches a cancellation token to this job via composition.
A template class representing either a value or an error.
Encapsulates retry behavior configuration for jobs.
@ callback
Call user callback for custom decision.
Base job class for schedulable work units in the thread system.
Thread-safe FIFO job queue with optional bounded size.
Core threading foundation of the thread system library.
job_priority
Priority levels for job scheduling.
@ normal
Normal priority, default for most jobs.
@ priority
Priority-based scheduling.
Internal structure holding composed behaviors for a job.