Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
Loading...
Searching...
No Matches
kcenon::thread::job_queue_adapter Class Reference

Adapter for job_queue to pool_queue_adapter_interface. More...

#include <job_queue_adapter.h>

Inheritance diagram for kcenon::thread::job_queue_adapter:
Inheritance graph
Collaboration diagram for kcenon::thread::job_queue_adapter:
Collaboration graph

Public Member Functions

 job_queue_adapter (std::shared_ptr< job_queue > queue)
 Construct adapter with existing job_queue.
 
 job_queue_adapter ()
 Construct adapter with new job_queue.
 
 ~job_queue_adapter () override=default
 
 job_queue_adapter (const job_queue_adapter &)=delete
 
job_queue_adapteroperator= (const job_queue_adapter &)=delete
 
 job_queue_adapter (job_queue_adapter &&)=default
 
job_queue_adapteroperator= (job_queue_adapter &&)=default
 
auto enqueue (std::unique_ptr< job > &&j) -> common::VoidResult override
 Enqueue a job.
 
auto enqueue_batch (std::vector< std::unique_ptr< job > > &&jobs) -> common::VoidResult override
 Enqueue a batch of jobs.
 
auto dequeue () -> common::Result< std::unique_ptr< job > > override
 Dequeue a job (blocking)
 
auto try_dequeue () -> common::Result< std::unique_ptr< job > > override
 Try to dequeue a job (non-blocking)
 
auto empty () const -> bool override
 Check if queue is empty.
 
auto size () const -> std::size_t override
 Get queue size.
 
auto clear () -> void override
 Clear all jobs from queue.
 
auto stop () -> void override
 Stop the queue.
 
auto is_stopped () const -> bool override
 Check if queue is stopped.
 
auto get_capabilities () const -> queue_capabilities override
 Get queue capabilities.
 
auto to_string () const -> std::string override
 Get string representation.
 
auto get_job_queue () const -> std::shared_ptr< job_queue > override
 Get the underlying job_queue if this adapter wraps one.
 
auto get_scheduler () -> scheduler_interface &override
 Get the underlying scheduler interface.
 
auto get_scheduler () const -> const scheduler_interface &override
 Get the underlying scheduler interface (const)
 
- Public Member Functions inherited from kcenon::thread::pool_queue_adapter_interface
virtual ~pool_queue_adapter_interface ()=default
 

Private Attributes

std::shared_ptr< job_queuequeue_
 

Detailed Description

Adapter for job_queue to pool_queue_adapter_interface.

This adapter wraps a job_queue and provides the unified interface expected by thread_pool. Since job_queue already has all required methods, this adapter simply delegates to the underlying queue.

Usage

auto queue = std::make_shared<job_queue>();
auto adapter = std::make_unique<job_queue_adapter>(queue);

Definition at line 33 of file job_queue_adapter.h.

Constructor & Destructor Documentation

◆ job_queue_adapter() [1/4]

kcenon::thread::job_queue_adapter::job_queue_adapter ( std::shared_ptr< job_queue > queue)
inlineexplicit

Construct adapter with existing job_queue.

Parameters
queueShared pointer to job_queue

Definition at line 39 of file job_queue_adapter.h.

40 : queue_(std::move(queue)) {}
std::shared_ptr< job_queue > queue_

◆ job_queue_adapter() [2/4]

kcenon::thread::job_queue_adapter::job_queue_adapter ( )
inline

Construct adapter with new job_queue.

Definition at line 45 of file job_queue_adapter.h.

46 : queue_(std::make_shared<job_queue>()) {}

◆ ~job_queue_adapter()

kcenon::thread::job_queue_adapter::~job_queue_adapter ( )
overridedefault

◆ job_queue_adapter() [3/4]

kcenon::thread::job_queue_adapter::job_queue_adapter ( const job_queue_adapter & )
delete

◆ job_queue_adapter() [4/4]

kcenon::thread::job_queue_adapter::job_queue_adapter ( job_queue_adapter && )
default

Member Function Documentation

◆ clear()

auto kcenon::thread::job_queue_adapter::clear ( ) -> void
inlineoverridevirtual

Clear all jobs from queue.

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 82 of file job_queue_adapter.h.

82 {
83 queue_->clear();
84 }

References queue_.

◆ dequeue()

auto kcenon::thread::job_queue_adapter::dequeue ( ) -> common::Result< std::unique_ptr< job > >
inlinenodiscardoverridevirtual

Dequeue a job (blocking)

Returns
Result containing the job or error

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 66 of file job_queue_adapter.h.

66 {
67 return queue_->dequeue();
68 }

References queue_.

◆ empty()

auto kcenon::thread::job_queue_adapter::empty ( ) const -> bool
inlinenodiscardoverridevirtual

Check if queue is empty.

Returns
true if empty

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 74 of file job_queue_adapter.h.

74 {
75 return queue_->empty();
76 }

References queue_.

◆ enqueue()

auto kcenon::thread::job_queue_adapter::enqueue ( std::unique_ptr< job > && job) -> common::VoidResult
inlinenodiscardoverridevirtual

Enqueue a job.

Parameters
jobJob to enqueue
Returns
VoidResult indicating success or error

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 58 of file job_queue_adapter.h.

58 {
59 return queue_->enqueue(std::move(j));
60 }

References queue_.

◆ enqueue_batch()

auto kcenon::thread::job_queue_adapter::enqueue_batch ( std::vector< std::unique_ptr< job > > && jobs) -> common::VoidResult
inlinenodiscardoverridevirtual

Enqueue a batch of jobs.

Parameters
jobsJobs to enqueue
Returns
VoidResult indicating success or error

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 62 of file job_queue_adapter.h.

62 {
63 return queue_->enqueue_batch(std::move(jobs));
64 }

References queue_.

◆ get_capabilities()

auto kcenon::thread::job_queue_adapter::get_capabilities ( ) const -> queue_capabilities
inlinenodiscardoverridevirtual

Get queue capabilities.

Returns
Capabilities structure

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 94 of file job_queue_adapter.h.

94 {
95 return queue_->get_capabilities();
96 }

References queue_.

◆ get_job_queue()

auto kcenon::thread::job_queue_adapter::get_job_queue ( ) const -> std::shared_ptr< job_queue >
inlinenodiscardoverridevirtual

Get the underlying job_queue if this adapter wraps one.

Returns
Shared pointer to job_queue, or nullptr if not applicable

This method is provided for backward compatibility with code that needs direct access to job_queue. Returns nullptr for policy_queue adapters.

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 102 of file job_queue_adapter.h.

102 {
103 return queue_;
104 }

References queue_.

◆ get_scheduler() [1/2]

auto kcenon::thread::job_queue_adapter::get_scheduler ( ) -> scheduler_interface &override
inlinenodiscardoverridevirtual

Get the underlying scheduler interface.

Returns
Reference to scheduler_interface

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 106 of file job_queue_adapter.h.

106 {
107 return *queue_;
108 }

References queue_.

◆ get_scheduler() [2/2]

auto kcenon::thread::job_queue_adapter::get_scheduler ( ) const -> const scheduler_interface &override
inlinenodiscardoverridevirtual

Get the underlying scheduler interface (const)

Returns
Const reference to scheduler_interface

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 110 of file job_queue_adapter.h.

110 {
111 return *queue_;
112 }

References queue_.

◆ is_stopped()

auto kcenon::thread::job_queue_adapter::is_stopped ( ) const -> bool
inlinenodiscardoverridevirtual

Check if queue is stopped.

Returns
true if stopped

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 90 of file job_queue_adapter.h.

90 {
91 return queue_->is_stopped();
92 }

References queue_.

◆ operator=() [1/2]

job_queue_adapter & kcenon::thread::job_queue_adapter::operator= ( const job_queue_adapter & )
delete

◆ operator=() [2/2]

job_queue_adapter & kcenon::thread::job_queue_adapter::operator= ( job_queue_adapter && )
default

◆ size()

auto kcenon::thread::job_queue_adapter::size ( ) const -> std::size_t
inlinenodiscardoverridevirtual

Get queue size.

Returns
Number of jobs in queue

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 78 of file job_queue_adapter.h.

78 {
79 return queue_->size();
80 }

References queue_.

◆ stop()

auto kcenon::thread::job_queue_adapter::stop ( ) -> void
inlineoverridevirtual

Stop the queue.

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 86 of file job_queue_adapter.h.

86 {
87 queue_->stop();
88 }

References queue_.

◆ to_string()

auto kcenon::thread::job_queue_adapter::to_string ( ) const -> std::string
inlinenodiscardoverridevirtual

Get string representation.

Returns
String describing the queue

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 98 of file job_queue_adapter.h.

98 {
99 return queue_->to_string();
100 }

References queue_.

◆ try_dequeue()

auto kcenon::thread::job_queue_adapter::try_dequeue ( ) -> common::Result< std::unique_ptr< job > >
inlinenodiscardoverridevirtual

Try to dequeue a job (non-blocking)

Returns
Result containing the job or error

Implements kcenon::thread::pool_queue_adapter_interface.

Definition at line 70 of file job_queue_adapter.h.

70 {
71 return queue_->try_dequeue();
72 }

References queue_.

Member Data Documentation

◆ queue_

std::shared_ptr<job_queue> kcenon::thread::job_queue_adapter::queue_
private

The documentation for this class was generated from the following file: