proxygen
folly::observer::SimpleObservable< T > Class Template Reference

#include <SimpleObservable.h>

Classes

struct  Context
 
struct  Wrapper
 

Public Member Functions

 SimpleObservable (T value)
 
 SimpleObservable (std::shared_ptr< const T > value)
 
void setValue (T value)
 
void setValue (std::shared_ptr< const T > value)
 
Observer< TgetObserver ()
 

Private Attributes

std::shared_ptr< Contextcontext_
 
std::once_flag observerInit_
 
folly::Optional< Observer< T > > observer_
 

Detailed Description

template<typename T>
class folly::observer::SimpleObservable< T >

Definition at line 26 of file SimpleObservable.h.

Constructor & Destructor Documentation

template<typename T >
folly::observer::SimpleObservable< T >::SimpleObservable ( T  value)
explicit

Definition at line 24 of file SimpleObservable-inl.h.

References folly::gen::move, and folly::observer::SimpleObservable< T >::setValue().

25  : context_(std::make_shared<Context>()) {
27 }
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
std::shared_ptr< Context > context_
uint64_t value(const typename LockFreeRingBuffer< T, Atom >::Cursor &rbcursor)
template<typename T >
folly::observer::SimpleObservable< T >::SimpleObservable ( std::shared_ptr< const T value)
explicit

Definition at line 30 of file SimpleObservable-inl.h.

References folly::gen::move, and folly::observer::SimpleObservable< T >::setValue().

31  : context_(std::make_shared<Context>()) {
33 }
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
std::shared_ptr< Context > context_
uint64_t value(const typename LockFreeRingBuffer< T, Atom >::Cursor &rbcursor)

Member Function Documentation

template<typename T >
Observer< T > folly::observer::SimpleObservable< T >::getObserver ( )

Definition at line 72 of file SimpleObservable-inl.h.

References folly::call_once(), folly::observer::SimpleObservable< T >::Wrapper< T >::context, folly::observer::SimpleObservable< T >::context_, folly::gen::move, folly::observer::SimpleObservable< T >::observer_, and folly::observer::SimpleObservable< T >::observerInit_.

Referenced by TEST().

72  {
74  SimpleObservable<T>::Wrapper wrapper;
75  wrapper.context = context_;
76  ObserverCreator<SimpleObservable<T>::Wrapper> creator(std::move(wrapper));
77  observer_ = std::move(creator).getObserver();
78  });
79  return *observer_;
80 }
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
folly::Optional< Observer< T > > observer_
FOLLY_ALWAYS_INLINE void call_once(basic_once_flag< Mutex, Atom > &flag, F &&f, Args &&...args)
Definition: CallOnce.h:56
std::shared_ptr< Context > context_
template<typename T >
void folly::observer::SimpleObservable< T >::setValue ( T  value)

Definition at line 36 of file SimpleObservable-inl.h.

References folly::gen::move.

Referenced by folly::observer::SimpleObservable< T >::SimpleObservable(), and TEST().

36  {
37  setValue(std::make_shared<const T>(std::move(value)));
38 }
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
uint64_t value(const typename LockFreeRingBuffer< T, Atom >::Cursor &rbcursor)
template<typename T >
void folly::observer::SimpleObservable< T >::setValue ( std::shared_ptr< const T value)

Definition at line 41 of file SimpleObservable-inl.h.

References folly::observer::SimpleObservable< T >::context_.

41  {
42  context_->value_.swap(value);
43 
44  context_->callback_.withWLock([](folly::Function<void()>& callback) {
45  if (callback) {
46  callback();
47  }
48  });
49 }
std::shared_ptr< Context > context_
uint64_t value(const typename LockFreeRingBuffer< T, Atom >::Cursor &rbcursor)

Member Data Documentation

template<typename T>
std::shared_ptr<Context> folly::observer::SimpleObservable< T >::context_
private
template<typename T>
folly::Optional<Observer<T> > folly::observer::SimpleObservable< T >::observer_
private
template<typename T>
std::once_flag folly::observer::SimpleObservable< T >::observerInit_
private

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