proxygen
folly::pushmi::receiver< VF, EF, DF > Class Template Reference

#include <receiver.h>

Public Types

using properties = property_set< is_receiver<>>
 

Public Member Functions

 receiver ()=default
 
constexpr receiver (VF vf)
 
constexpr receiver (EF ef)
 
constexpr receiver (DF df)
 
constexpr receiver (EF ef, DF df)
 
constexpr receiver (VF vf, EF ef, DF df=DF{})
 
requires Invocable< VF &, VN... > void value (VN &&...vn)
 
requires Invocable< EF &, E > void error (E e) noexcept
 
void done ()
 

Private Attributes

bool done_ = false
 
VF vf_
 
EF ef_
 
DF df_
 

Detailed Description

template<class VF, class EF, class DF>
class folly::pushmi::receiver< VF, EF, DF >

Definition at line 170 of file receiver.h.

Member Typedef Documentation

template<class VF , class EF , class DF >
using folly::pushmi::receiver< VF, EF, DF >::properties = property_set<is_receiver<>>

Definition at line 187 of file receiver.h.

Constructor & Destructor Documentation

template<class VF , class EF , class DF >
folly::pushmi::receiver< VF, EF, DF >::receiver ( )
default
template<class VF , class EF , class DF >
constexpr folly::pushmi::receiver< VF, EF, DF >::receiver ( VF  vf)
inlineexplicit

Definition at line 190 of file receiver.h.

190 : receiver(std::move(vf), EF{}, DF{}) {}
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
template<class VF , class EF , class DF >
constexpr folly::pushmi::receiver< VF, EF, DF >::receiver ( EF  ef)
inlineexplicit

Definition at line 191 of file receiver.h.

References folly::gen::move.

191 : receiver(VF{}, std::move(ef), DF{}) {}
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
template<class VF , class EF , class DF >
constexpr folly::pushmi::receiver< VF, EF, DF >::receiver ( DF  df)
inlineexplicit

Definition at line 192 of file receiver.h.

References folly::gen::move.

192 : receiver(VF{}, EF{}, std::move(df)) {}
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
template<class VF , class EF , class DF >
constexpr folly::pushmi::receiver< VF, EF, DF >::receiver ( EF  ef,
DF  df 
)
inline
template<class VF , class EF , class DF >
constexpr folly::pushmi::receiver< VF, EF, DF >::receiver ( VF  vf,
EF  ef,
DF  df = DF{} 
)
inline

Member Function Documentation

template<class VF , class EF , class DF >
void folly::pushmi::receiver< VF, EF, DF >::done ( )
inline

Definition at line 219 of file receiver.h.

References PUSHMI_TYPE_CONSTRAINT, and folly::pushmi::requires().

219  {
220  if (!done_) {
221  done_ = true;
222  df_();
223  }
224  }
template<class VF , class EF , class DF >
requires Invocable<EF&, E> void folly::pushmi::receiver< VF, EF, DF >::error ( E  e)
inlinenoexcept

Definition at line 212 of file receiver.h.

References folly::gen::move.

212  {
213  static_assert(NothrowInvocable<EF&, E>, "error function must be noexcept");
214  if (!done_) {
215  done_ = true;
216  ef_(std::move(e));
217  }
218  }
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
template<class VF , class EF , class DF >
requires Invocable<VF&, VN...> void folly::pushmi::receiver< VF, EF, DF >::value ( VN &&...  vn)
inline

Definition at line 203 of file receiver.h.

References folly::pushmi::PUSHMI_TEMPLATE(), and folly::pushmi::requires().

203  {
204  if (done_) {
205  return;
206  }
207  // done_ = true;
208  vf_((VN &&) vn...);
209  }

Member Data Documentation

template<class VF , class EF , class DF >
DF folly::pushmi::receiver< VF, EF, DF >::df_
private

Definition at line 174 of file receiver.h.

template<class VF , class EF , class DF >
bool folly::pushmi::receiver< VF, EF, DF >::done_ = false
private

Definition at line 171 of file receiver.h.

template<class VF , class EF , class DF >
EF folly::pushmi::receiver< VF, EF, DF >::ef_
private

Definition at line 173 of file receiver.h.

template<class VF , class EF , class DF >
VF folly::pushmi::receiver< VF, EF, DF >::vf_
private

Definition at line 172 of file receiver.h.


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