YACLib
C++ library for concurrent tasks execution
Loading...
Searching...
No Matches
yaclib::Task< V, T > Class Template Reference

Provides a mechanism to schedule the some async operations TODO(MBkkt) add description. More...

#include <task.hpp>

Public Types

using Result = typename T::template Result< V >
 

Public Member Functions

 Task (const Task &)=delete
 
Taskoperator= (const Task &)=delete
 
 Task (Task &&other) noexcept=default
 
Taskoperator= (Task &&other) noexcept=default
 
 Task () noexcept=default
 
 ~Task () noexcept
 
bool Valid () const &noexcept
 
bool Ready () const &noexcept
 Check that Result that corresponds to this Task is computed.
 
Task< V, T > On (std::nullptr_t) &&noexcept
 Do nothing, just for compatibility with FutureOn TODO(MBkkt) think about force On/Detach/ToFuture: It's able to set passed executor to previous nullptr/all/head/etc or replace.
 
template<typename Func >
auto Then (IExecutor &e, Func &&f) &&
 
template<typename Func >
auto ThenInline (Func &&f) &&
 
template<typename Func >
auto Then (Func &&f) &&
 
void Cancel () &&noexcept
 
void Detach () &&noexcept
 
void Detach (IExecutor &e) &&noexcept
 
Future< V, T > ToFuture () &&noexcept
 
FutureOn< V, T > ToFuture (IExecutor &e) &&noexcept
 
Result Get () &&noexcept
 
void Touch () &=delete
 
void Touch () const &&=delete
 
const ResultTouch () const &noexcept
 
Result Touch () &&noexcept
 
detail::UniqueCorePtr< V, T > & GetCore () noexcept
 Method that get internal Core state.
 
 Task (detail::UniqueCorePtr< V, T > core) noexcept
 

Detailed Description

template<typename V, typename T>
class yaclib::Task< V, T >

Provides a mechanism to schedule the some async operations TODO(MBkkt) add description.

Definition at line 25 of file task.hpp.

Member Typedef Documentation

◆ Result

template<typename V , typename T >
using yaclib::Task< V, T >::Result = typename T::template Result<V>

Definition at line 31 of file task.hpp.

Constructor & Destructor Documentation

◆ Task() [1/4]

template<typename V , typename T >
yaclib::Task< V, T >::Task ( const Task< V, T > &  )
delete

◆ Task() [2/4]

template<typename V , typename T >
yaclib::Task< V, T >::Task ( Task< V, T > &&  other)
defaultnoexcept

◆ Task() [3/4]

template<typename V , typename T >
yaclib::Task< V, T >::Task ( )
defaultnoexcept

◆ ~Task()

template<typename V , typename T >
yaclib::Task< V, T >::~Task ( )
inlinenoexcept

Definition at line 42 of file task.hpp.

References yaclib::Task< V, T >::Cancel(), and yaclib::Task< V, T >::Valid().

◆ Task() [4/4]

template<typename V , typename T >
yaclib::Task< V, T >::Task ( detail::UniqueCorePtr< V, T >  core)
inlinenoexcept

Definition at line 144 of file task.hpp.

Member Function Documentation

◆ Cancel()

template<typename V , typename T >
void yaclib::Task< V, T >::Cancel ( ) &&
inlinenoexcept

Definition at line 90 of file task.hpp.

References yaclib::MakeContract(), and yaclib::MakeInline().

Referenced by yaclib::Task< V, T >::~Task().

◆ Detach() [1/2]

template<typename V , typename T >
void yaclib::Task< V, T >::Detach ( ) &&
inlinenoexcept

◆ Detach() [2/2]

template<typename V , typename T >
void yaclib::Task< V, T >::Detach ( IExecutor e) &&
inlinenoexcept

◆ Get()

template<typename V , typename T >
Result yaclib::Task< V, T >::Get ( ) &&
inlinenoexcept

Definition at line 118 of file task.hpp.

◆ GetCore()

template<typename V , typename T >
detail::UniqueCorePtr< V, T > & yaclib::Task< V, T >::GetCore ( )
inlinenoexcept

Method that get internal Core state.

Returns
internal Core state ptr

Definition at line 141 of file task.hpp.

◆ On()

template<typename V , typename T >
Task< V, T > yaclib::Task< V, T >::On ( std::nullptr_t  ) &&
inlinenoexcept

Do nothing, just for compatibility with FutureOn TODO(MBkkt) think about force On/Detach/ToFuture: It's able to set passed executor to previous nullptr/all/head/etc or replace.

Definition at line 67 of file task.hpp.

◆ operator=() [1/2]

template<typename V , typename T >
Task & yaclib::Task< V, T >::operator= ( const Task< V, T > &  )
delete

◆ operator=() [2/2]

template<typename V , typename T >
Task & yaclib::Task< V, T >::operator= ( Task< V, T > &&  other)
defaultnoexcept

◆ Ready()

template<typename V , typename T >
bool yaclib::Task< V, T >::Ready ( ) const &
inlinenoexcept

Check that Result that corresponds to this Task is computed.

Returns
false if the Result of this Task is not computed yet, otherwise true

Definition at line 57 of file task.hpp.

References yaclib::Task< V, T >::Valid(), and YACLIB_ASSERT.

Referenced by yaclib::Task< V, T >::Then(), yaclib::Task< V, T >::Then(), yaclib::Task< V, T >::ThenInline(), yaclib::Task< V, T >::Touch(), and yaclib::Task< V, T >::Touch().

◆ Then() [1/2]

template<typename V , typename T >
template<typename Func >
auto yaclib::Task< V, T >::Then ( Func &&  f) &&
inline

Definition at line 84 of file task.hpp.

References yaclib::MakeContract(), yaclib::Task< V, T >::Ready(), and YACLIB_ASSERT.

◆ Then() [2/2]

template<typename V , typename T >
template<typename Func >
auto yaclib::Task< V, T >::Then ( IExecutor e,
Func &&  f 
) &&
inline

Definition at line 72 of file task.hpp.

References yaclib::MakeContract(), yaclib::Task< V, T >::Ready(), and YACLIB_ASSERT.

◆ ThenInline()

template<typename V , typename T >
template<typename Func >
auto yaclib::Task< V, T >::ThenInline ( Func &&  f) &&
inline

Definition at line 78 of file task.hpp.

References yaclib::MakeContract(), yaclib::Task< V, T >::Ready(), and YACLIB_ASSERT.

◆ ToFuture() [1/2]

template<typename V , typename T >
Future< V, T > yaclib::Task< V, T >::ToFuture ( ) &&
inlinenoexcept

Definition at line 107 of file task.hpp.

References yaclib::detail::Start(), yaclib::Task< V, T >::Valid(), and YACLIB_ASSERT.

◆ ToFuture() [2/2]

template<typename V , typename T >
FutureOn< V, T > yaclib::Task< V, T >::ToFuture ( IExecutor e) &&
inlinenoexcept

◆ Touch() [1/4]

template<typename V , typename T >
Result yaclib::Task< V, T >::Touch ( ) &&
inlinenoexcept

Definition at line 130 of file task.hpp.

References yaclib::Task< V, T >::Ready(), and YACLIB_ASSERT.

◆ Touch() [2/4]

template<typename V , typename T >
void yaclib::Task< V, T >::Touch ( ) &
delete

◆ Touch() [3/4]

template<typename V , typename T >
void yaclib::Task< V, T >::Touch ( ) const &&
delete

◆ Touch() [4/4]

template<typename V , typename T >
const Result & yaclib::Task< V, T >::Touch ( ) const &
inlinenoexcept

Definition at line 126 of file task.hpp.

References yaclib::Task< V, T >::Ready(), and YACLIB_ASSERT.

◆ Valid()


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