Commit 6a7f9395 authored by Andrii Grynenko's avatar Andrii Grynenko Committed by Facebook Github Bot 1

Fix SimplerObservable build with -Werror=unused-local-typedefs

Reviewed By: yfeldblum

Differential Revision: D3765642

fbshipit-source-id: 9b1cc4007c553da5082799fa4ed0af8f7850ec8d
parent e4e0bbe1
...@@ -49,30 +49,31 @@ void SimpleObservable<T>::setValue(std::shared_ptr<const T> value) { ...@@ -49,30 +49,31 @@ void SimpleObservable<T>::setValue(std::shared_ptr<const T> value) {
} }
template <typename T> template <typename T>
Observer<T> SimpleObservable<T>::getObserver() { struct SimpleObservable<T>::Wrapper {
struct SimpleObservableWrapper { using element_type = T;
using element_type = T;
std::shared_ptr<Context> context; std::shared_ptr<Context> context;
std::shared_ptr<const T> get() { std::shared_ptr<const T> get() {
return context->value_.copy(); return context->value_.copy();
} }
void subscribe(folly::Function<void()> callback) { void subscribe(folly::Function<void()> callback) {
context->callback_.swap(callback); context->callback_.swap(callback);
} }
void unsubscribe() { void unsubscribe() {
folly::Function<void()> empty; folly::Function<void()> empty;
context->callback_.swap(empty); context->callback_.swap(empty);
} }
}; };
template <typename T>
Observer<T> SimpleObservable<T>::getObserver() {
std::call_once(observerInit_, [&]() { std::call_once(observerInit_, [&]() {
SimpleObservableWrapper wrapper; SimpleObservable<T>::Wrapper wrapper;
wrapper.context = context_; wrapper.context = context_;
ObserverCreator<SimpleObservableWrapper> creator(std::move(wrapper)); ObserverCreator<SimpleObservable<T>::Wrapper> creator(std::move(wrapper));
observer_ = std::move(creator).getObserver(); observer_ = std::move(creator).getObserver();
}); });
return *observer_; return *observer_;
......
...@@ -38,6 +38,7 @@ class SimpleObservable { ...@@ -38,6 +38,7 @@ class SimpleObservable {
folly::Synchronized<std::shared_ptr<const T>> value_; folly::Synchronized<std::shared_ptr<const T>> value_;
folly::Synchronized<folly::Function<void()>> callback_; folly::Synchronized<folly::Function<void()>> callback_;
}; };
struct Wrapper;
std::shared_ptr<Context> context_; std::shared_ptr<Context> context_;
std::once_flag observerInit_; std::once_flag observerInit_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment