Bifrost SDK
Bifrost SDK documentation
Amino::TaskObserver Class Reference

Class managing (with unique ownership) a concrete ITaskObserver. More...

#include <TaskObserver.h>

Inheritance diagram for Amino::TaskObserver:
Amino::TaskObserverT< T >

Public Member Functions

AMINO_CORE_SHARED_DECL TaskObserver () noexcept
 Default constructor (constructs a noop observer). More...
 
AMINO_CORE_SHARED_DECL TaskObserver (TaskObserver &&) noexcept
 Move constructor. More...
 
AMINO_CORE_SHARED_DECL TaskObserveroperator= (TaskObserver &&o) noexcept
 Move assignment operator. More...
 
AMINO_CORE_SHARED_DECL ~TaskObserver ()
 Destructor. More...
 
TaskNotifier getNotifier () const
 Create and return a notifier associated with this observer. More...
 
AMINO_CORE_SHARED_DECL bool isInUse () const
 Whether this TaskObserver has a TaskNotifier in use. More...
 
AMINO_CORE_SHARED_DECL void reset () noexcept
 Reset the observer to a noop observer. More...
 
 TaskObserver (TaskObserver const &)=delete
 TaskObserver is not copy-constructible. More...
 
TaskObserveroperator= (TaskObserver const &)=delete
 TaskObserver is not copy-assignable. More...
 
AMINO_CORE_SHARED_DECL bool isValid () const
 Whether this observer is valid (wraps a concrete non-null ITaskObserver). More...
 
 operator bool () const
 Whether this observer is valid (wraps a concrete non-null ITaskObserver). More...
 

Static Public Member Functions

template<typename T , typename... Args>
static TaskObserverT< T > make (Args &&... args)
 Create a new concrete task observer of type T. More...
 

Detailed Description

Class managing (with unique ownership) a concrete ITaskObserver.

This class is intented to be kept on the "client" side and uniquely manages the life-scope of a ITaskObserver. Computation tasks on the other hand will take a TaskNotifier (which only references the ITaskObserver (non-owning)) to report progress. The "client" side may destroy the TaskObserver managed at any time, in which case the notifications will just stop being sent. The destruction may block until current callback call (from the TaskNotifier) is complete (if any).

Definition at line 143 of file TaskObserver.h.

Constructor & Destructor Documentation

◆ TaskObserver() [1/3]

AMINO_CORE_SHARED_DECL Amino::TaskObserver::TaskObserver ( )
noexcept

Default constructor (constructs a noop observer).

◆ TaskObserver() [2/3]

AMINO_CORE_SHARED_DECL Amino::TaskObserver::TaskObserver ( TaskObserver &&  )
noexcept

Move constructor.

◆ ~TaskObserver()

AMINO_CORE_SHARED_DECL Amino::TaskObserver::~TaskObserver ( )

Destructor.

Note
This may block and wait if a notifier is currently notifying to this observer.

◆ TaskObserver() [3/3]

Amino::TaskObserver::TaskObserver ( TaskObserver const &  )
delete

TaskObserver is not copy-constructible.

Member Function Documentation

◆ getNotifier()

TaskNotifier Amino::TaskObserver::getNotifier ( ) const
inline

Create and return a notifier associated with this observer.

Precondition
!isInUse()

Definition at line 546 of file TaskObserver.h.

◆ isInUse()

AMINO_CORE_SHARED_DECL bool Amino::TaskObserver::isInUse ( ) const

Whether this TaskObserver has a TaskNotifier in use.

TaskObserver can only have one TaskNotifier in use at a time.

◆ isValid()

AMINO_CORE_SHARED_DECL bool Amino::TaskObserver::isValid ( ) const

Whether this observer is valid (wraps a concrete non-null ITaskObserver).

◆ make()

template<typename T , typename... Args>
TaskObserverT< T > Amino::TaskObserver::make ( Args &&...  args)
inlinestatic

Create a new concrete task observer of type T.

Forwards the arguments to the constructor of T.

Returns
The typed TaskObserverT managing the concrete ITaskObserver of type T.

Definition at line 536 of file TaskObserver.h.

◆ operator bool()

Amino::TaskObserver::operator bool ( ) const
inlineexplicit

Whether this observer is valid (wraps a concrete non-null ITaskObserver).

Definition at line 183 of file TaskObserver.h.

◆ operator=() [1/2]

AMINO_CORE_SHARED_DECL TaskObserver & Amino::TaskObserver::operator= ( TaskObserver &&  o)
noexcept

Move assignment operator.

Note
This may block and wait if a notifier is currently notifying to this observer.

Referenced by Amino::TaskObserverT< T >::operator=().

◆ operator=() [2/2]

TaskObserver & Amino::TaskObserver::operator= ( TaskObserver const &  )
delete

TaskObserver is not copy-assignable.

◆ reset()

AMINO_CORE_SHARED_DECL void Amino::TaskObserver::reset ( )
noexcept

Reset the observer to a noop observer.