Commit 109334de authored by Andrii Grynenko's avatar Andrii Grynenko Committed by Facebook Github Bot 0

Fix TLObserver copy constructor

Reviewed By: yfeldblum

Differential Revision: D3853494

fbshipit-source-id: 23f5cadcb55a9307fb2a825fe4c53a03c5978d12
parent fd01e2bf
......@@ -58,6 +58,10 @@ TLObserver<T>::TLObserver(Observer<T> observer)
: observer_(observer),
snapshot_([&] { return new Snapshot<T>(observer_.getSnapshot()); }) {}
template <typename T>
TLObserver<T>::TLObserver(const TLObserver<T>& other)
: TLObserver(other.observer_) {}
template <typename T>
const Snapshot<T>& TLObserver<T>::getSnapshotRef() const {
auto& snapshot = *snapshot_;
......
......@@ -158,6 +158,7 @@ template <typename T>
class TLObserver {
public:
explicit TLObserver(Observer<T> observer);
TLObserver(const TLObserver<T>& other);
const Snapshot<T>& getSnapshotRef() const;
const Snapshot<T>& operator*() const {
......
......@@ -248,3 +248,15 @@ TEST(Observer, Stress) {
}
});
}
TEST(Observer, TLObserver) {
auto createTLObserver = [](int value) {
return folly::observer::makeTLObserver([=] { return value; });
};
auto k =
std::make_unique<folly::observer::TLObserver<int>>(createTLObserver(42));
EXPECT_EQ(42, ***k);
k = std::make_unique<folly::observer::TLObserver<int>>(createTLObserver(41));
EXPECT_EQ(41, ***k);
}
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