joque
task orchestration library
traits.hpp
Go to the documentation of this file.
1 #pragma once
23 
24 #include "run_result.hpp"
25 
26 namespace joque
27 {
28 
29 struct task;
30 
33 template < typename T >
34 struct job_traits
35 {
36  [[nodiscard]] static inval_result is_invalidated( const T& )
37  {
38  return { .invalidated = true, .log = { "always invalidated" } };
39  }
40 
41  [[nodiscard]] static run_result run( const task& t, T& f )
42  {
43  try {
44  return f( t );
45  }
46  catch ( std::exception& e ) {
47  run_result res;
48  insert_err( res, "Uncaught exception:" );
49  insert_err( res, e.what() );
50  return res;
51  }
52  }
53 };
54 
55 } // namespace joque
MIT License.
Definition: dag.hpp:27
void insert_err(auto &res, std::string data)
Definition: run_result.hpp:81
bool invalidated
Definition: run_result.hpp:66
Fun && f
Definition: task.hpp:93
Definition: run_result.hpp:65
TODO: hide this Result of single traits run call.
Definition: run_result.hpp:55
Single task that should be executed by the system.
Definition: task.hpp:49
Default job traits for all types.
Definition: traits.hpp:35
static run_result run(const task &t, T &f)
Definition: traits.hpp:41
static inval_result is_invalidated(const T &)
Definition: traits.hpp:36