uvco 0.1
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
uvco::PromiseHandle< T > Class Template Reference

#include <promise.h>

Public Member Functions

 PromiseHandle (const PromiseHandle &)=delete
 
 PromiseHandle (PromiseHandle &&)=delete
 
PromiseHandleoperator= (const PromiseHandle &)=delete
 
PromiseHandleoperator= (PromiseHandle &&)=delete
 
 ~PromiseHandle ()
 
void cancel ()
 

Private Member Functions

 PromiseHandle (PromiseCore< T > *core)
 

Private Attributes

PromiseCore< T > * core_
 

Friends

class Promise< T >
 

Detailed Description

template<typename T>
class uvco::PromiseHandle< T >

A PromiseHandle allows you to cancel a coroutine. This will wake up the current awaiter with an exception (UV_ECANCELED). However, the coroutine itself will keep running in the background until it finishes normally.

This is not optimal, but a stop-gap until a better solution is implemented.

Constructor & Destructor Documentation

◆ PromiseHandle() [1/3]

template<typename T >
uvco::PromiseHandle< T >::PromiseHandle ( const PromiseHandle< T > &  )
delete

◆ PromiseHandle() [2/3]

template<typename T >
uvco::PromiseHandle< T >::PromiseHandle ( PromiseHandle< T > &&  )
delete

◆ ~PromiseHandle()

template<typename T >
uvco::PromiseHandle< T >::~PromiseHandle ( )
inline
35 {
36 if (core_ != nullptr) {
37 core_->delRef();
38 }
39 }
PromiseCore< T > * core_
Definition promise.h:53

◆ PromiseHandle() [3/3]

template<typename T >
uvco::PromiseHandle< T >::PromiseHandle ( PromiseCore< T > *  core)
inlineexplicitprivate
50: core_{core->addRef()} {}

Member Function Documentation

◆ cancel()

template<typename T >
void uvco::PromiseHandle< T >::cancel ( )
inline

Cancel the referred promise. The awaiting coroutine will receive an UvcoException with the error code UV_ECANCELED.

43 {
44 if (core_ != nullptr) {
45 core_->cancel();
46 }
47 }

◆ operator=() [1/2]

template<typename T >
PromiseHandle & uvco::PromiseHandle< T >::operator= ( const PromiseHandle< T > &  )
delete

◆ operator=() [2/2]

template<typename T >
PromiseHandle & uvco::PromiseHandle< T >::operator= ( PromiseHandle< T > &&  )
delete

Friends And Related Symbol Documentation

◆ Promise< T >

template<typename T >
friend class Promise< T >
friend

Member Data Documentation

◆ core_

template<typename T >
PromiseCore<T>* uvco::PromiseHandle< T >::core_
private

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