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.
Public Member Functions | |
| OnceRefSender (OnceRefSender &&other) | |
| OnceRefSender (const OnceRefSender &)=delete | |
| OnceRefSender & | operator= (const OnceRefSender &)=delete |
| OnceRefSender & | operator= (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) |
|
inline |
When using ModifyUnsafe(), call Commit() after all modifications have been made to awaken the OnceRefReceiver.
|
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.