Pigweed
 
Loading...
Searching...
No Matches
pw::async2::OnceRefSender< T > Class Template Reference

#include <once_sender.h>

Public Member Functions

 OnceRefSender (OnceRefSender &&other)
 
 OnceRefSender (const OnceRefSender &)=delete
 
OnceRefSenderoperator= (const OnceRefSender &)=delete
 
OnceRefSenderoperator= (OnceRefSender &&other)=delete
 
void Set (const T &value)
 Copy assigns the reference and awakens the receiver.
 
void Set (T &&value)
 Move assigns the reference and awakens the receiver.
 
void ModifyUnsafe (pw::Function< void(T &)> func)
 
void Commit ()
 

Friends

class OnceRefReceiver< T >
 
template<typename U >
std::pair< OnceRefSender< U >, OnceRefReceiver< U > > MakeOnceRefSenderAndReceiver (U &)
 
template<typename U >
void InitializeOnceRefSenderAndReceiver (OnceRefSender< U > &sender, OnceRefReceiver< U > &receiver, U &value)
 

Detailed Description

template<typename T>
class pw::async2::OnceRefSender< T >

OnceRefSender mutates the reference received by the OnceReceiver it is constructed with. It must be constructed using MakeOnceRefSenderAndReceiver. OnceRefSender is thread safe and may be used on a different thread than OnceRefReceiver.

Member Function Documentation

◆ Commit()

template<typename T >
void pw::async2::OnceRefSender< T >::Commit ( )
inline

When using ModifyUnsafe(), call Commit() after all modifications have been made to awaken the OnceRefReceiver.

◆ ModifyUnsafe()

template<typename T >
void pw::async2::OnceRefSender< T >::ModifyUnsafe ( pw::Function< void(T &)>  func)
inline

Care must be taken not to save the reference passed to func or to call any other Once*Sender/Once*Receiver APIs from within func. This should be a simple modification. After all modifications are complete, Commit should be called.


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