PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
kcenon::pacs::integration::lambda_job Class Reference

IJob implementation that wraps a callable. More...

#include <executor_adapter.h>

Inheritance diagram for kcenon::pacs::integration::lambda_job:
Inheritance graph
Collaboration diagram for kcenon::pacs::integration::lambda_job:
Collaboration graph

Public Types

using job_function = std::function<kcenon::common::VoidResult()>
 

Public Member Functions

 lambda_job (job_function func, std::string name="lambda_job", int priority=0)
 Construct a lambda job.
 
template<typename F >
requires std::is_void_v<std::invoke_result_t<F>>
 lambda_job (F &&func, std::string name="lambda_job", int priority=0)
 Construct from void-returning callable.
 
kcenon::common::VoidResult execute () override
 
std::string get_name () const override
 
int get_priority () const override
 

Private Attributes

job_function func_
 
std::string name_
 
int priority_
 

Detailed Description

IJob implementation that wraps a callable.

This class adapts a std::function to the IJob interface, allowing lambda expressions and other callables to be used with IExecutor.

Definition at line 65 of file executor_adapter.h.

Member Typedef Documentation

◆ job_function

Constructor & Destructor Documentation

◆ lambda_job() [1/2]

kcenon::pacs::integration::lambda_job::lambda_job ( job_function func,
std::string name = "lambda_job",
int priority = 0 )
inlineexplicit

Construct a lambda job.

Parameters
funcThe function to execute
nameJob name for logging (default: "lambda_job")
priorityJob priority (default: 0)
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/integration/executor_adapter.h.

Definition at line 76 of file executor_adapter.h.

80 : func_(std::move(func))
81 , name_(std::move(name))
82 , priority_(priority) {}
std::string_view name

◆ lambda_job() [2/2]

template<typename F >
requires std::is_void_v<std::invoke_result_t<F>>
kcenon::pacs::integration::lambda_job::lambda_job ( F && func,
std::string name = "lambda_job",
int priority = 0 )
inlineexplicit

Construct from void-returning callable.

Parameters
funcVoid-returning function
nameJob name for logging
priorityJob priority

Definition at line 93 of file executor_adapter.h.

94 : func_([f = std::forward<F>(func)]() -> kcenon::common::VoidResult {
95 f();
96 return kcenon::common::VoidResult(std::monostate{});
97 })
98 , name_(std::move(name))
99 , priority_(priority) {}

Member Function Documentation

◆ execute()

kcenon::common::VoidResult kcenon::pacs::integration::lambda_job::execute ( )
inlineoverride

Definition at line 101 of file executor_adapter.h.

101 {
102 if (!func_) {
103 return kcenon::common::VoidResult(
104 kcenon::common::error_info{-1, "No function provided", "executor"});
105 }
106 return func_();
107 }

◆ get_name()

std::string kcenon::pacs::integration::lambda_job::get_name ( ) const
inlinenodiscardoverride

Definition at line 109 of file executor_adapter.h.

109{ return name_; }

◆ get_priority()

int kcenon::pacs::integration::lambda_job::get_priority ( ) const
inlinenodiscardoverride

Definition at line 110 of file executor_adapter.h.

110{ return priority_; }

Member Data Documentation

◆ func_

job_function kcenon::pacs::integration::lambda_job::func_
private

◆ name_

std::string kcenon::pacs::integration::lambda_job::name_
private

◆ priority_

int kcenon::pacs::integration::lambda_job::priority_
private

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