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) {
}
template <typename T>
Observer<T> SimpleObservable<T>::getObserver() {
struct SimpleObservableWrapper {
using element_type = T;
struct SimpleObservable<T>::Wrapper {
using element_type = T;
std::shared_ptr<Context> context;
std::shared_ptr<Context> context;
std::shared_ptr<const T> get() {
return context->value_.copy();
}
std::shared_ptr<const T> get() {
return context->value_.copy();
}
void subscribe(folly::Function<void()> callback) {
context->callback_.swap(callback);
}
void subscribe(folly::Function<void()> callback) {
context->callback_.swap(callback);
}
void unsubscribe() {
folly::Function<void()> empty;
context->callback_.swap(empty);
}
};
void unsubscribe() {
folly::Function<void()> empty;
context->callback_.swap(empty);
}
};
template <typename T>
Observer<T> SimpleObservable<T>::getObserver() {
std::call_once(observerInit_, [&]() {
SimpleObservableWrapper wrapper;
SimpleObservable<T>::Wrapper wrapper;
wrapper.context = context_;
ObserverCreator<SimpleObservableWrapper> creator(std::move(wrapper));
ObserverCreator<SimpleObservable<T>::Wrapper> creator(std::move(wrapper));
observer_ = std::move(creator).getObserver();
});
return *observer_;
......
......@@ -38,6 +38,7 @@ class SimpleObservable {
folly::Synchronized<std::shared_ptr<const T>> value_;
folly::Synchronized<folly::Function<void()>> callback_;
};
struct Wrapper;
std::shared_ptr<Context> context_;
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