@@ -29,8 +29,6 @@ class Observer
2929 using NodeType = REACT_IMPL ::ObserverNode;
3030
3131public:
32- Observer () = default ;
33-
3432 Observer (const Observer&) = default ;
3533 Observer& operator =(const Observer&) = default ;
3634
@@ -41,45 +39,39 @@ class Observer
4139 template <typename F, typename ... Ts>
4240 Observer (F&& func, const Signal<Ts>& ... subjects) :
4341 Observer::Observer (REACT_IMPL ::CtorTag{ }, CreateSignalObserverNode(std::forward<F>(func), subjects ...))
44- { }
42+ { }
4543
4644 // Construct signal observer with explicit group
4745 template <typename F, typename ... Ts>
4846 Observer (const Group& group, F&& func, const Signal<Ts>& ... subjects) :
49- Observer::Observer (REACT_IMPL ::CtorTag{ }, CreateSignalObserverNode(REACT_IMPL ::PrivateGroupInterface::GraphPtr( group) , std::forward<F>(func), subjects ...))
50- { }
47+ Observer::Observer (REACT_IMPL ::CtorTag{ }, CreateSignalObserverNode(group, std::forward<F>(func), subjects ...))
48+ { }
5149
5250 // Construct event observer with implicit group
5351 template <typename F, typename T>
5452 Observer (F&& func, const Event<T>& subject) :
5553 Observer::Observer (REACT_IMPL ::CtorTag{ }, CreateEventObserverNode(std::forward<F>(func), subject))
56- { }
54+ { }
5755
5856 // Construct event observer with explicit group
5957 template <typename F, typename T>
6058 Observer (const Group& group, F&& func, const Event<T>& subject) :
61- Observer::Observer (REACT_IMPL ::CtorTag{ }, CreateEventObserverNode(REACT_IMPL ::PrivateGroupInterface::GraphPtr( group) , std::forward<F>(func), subject))
62- { }
59+ Observer::Observer (REACT_IMPL ::CtorTag{ }, CreateEventObserverNode(group, std::forward<F>(func), subject))
60+ { }
6361
6462 // Constructed synced event observer with implicit group
6563 template <typename F, typename T, typename ... Us>
6664 Observer (F&& func, const Event<T>& subject, const Signal<Us>& ... signals) :
6765 Observer::Observer (REACT_IMPL ::CtorTag{ }, CreateSyncedEventObserverNode(std::forward<F>(func), subject, signals ...))
68- { }
66+ { }
6967
7068 // Constructed synced event observer with explicit group
7169 template <typename F, typename T, typename ... Us>
7270 Observer (const Group& group, F&& func, const Event<T>& subject, const Signal<Us>& ... signals) :
73- Observer::Observer (REACT_IMPL ::CtorTag{ }, CreateSyncedEventObserverNode(REACT_IMPL ::PrivateGroupInterface::GraphPtr(group), std::forward<F>(func), subject, signals ...))
74- { }
75-
76- void Cancel ()
77- { nodePtr_.reset (); }
78-
79- bool IsCancelled () const
80- { return nodePtr_ != nullptr ; }
71+ Observer::Observer (REACT_IMPL ::CtorTag{ }, CreateSyncedEventObserverNode(group, std::forward<F>(func), subject, signals ...))
72+ { }
8173
82- protected:
74+ public: // Internal
8375 // Private node ctor
8476 Observer (REACT_IMPL ::CtorTag, std::shared_ptr<NodeType>&& nodePtr) :
8577 nodePtr_ (std::move(nodePtr))
@@ -91,43 +83,42 @@ class Observer
9183 auto NodePtr () const -> const std::shared_ptr<NodeType>&
9284 { return nodePtr_; }
9385
86+ protected:
9487 template <typename F, typename T1 , typename ... Ts>
95- auto CreateSignalObserverNode (const std::shared_ptr< REACT_IMPL ::ReactiveGraph>& graphPtr , F&& func, const Signal<T1 >& dep1, const Signal<Ts>& ... deps) -> decltype(auto )
88+ auto CreateSignalObserverNode (const Group& group , F&& func, const Signal<T1 >& dep1, const Signal<Ts>& ... deps) -> decltype(auto )
9689 {
9790 using REACT_IMPL ::PrivateSignalLinkNodeInterface;
9891 using ObsNodeType = REACT_IMPL ::SignalObserverNode<typename std::decay<F>::type, T1 , Ts ...>;
9992
10093 return std::make_shared<ObsNodeType>(
101- graphPtr ,
94+ group ,
10295 std::forward<F>(func),
10396 PrivateSignalLinkNodeInterface::GetLocalNodePtr (graphPtr, dep1), PrivateSignalLinkNodeInterface::GetLocalNodePtr (graphPtr, deps) ...);
10497 }
10598
10699 template <typename F, typename T1 , typename ... Ts>
107100 auto CreateSignalObserverNode (F&& func, const Signal<T1 >& dep1, const Signal<Ts>& ... deps) -> decltype(auto )
108101 {
109- using REACT_IMPL ::PrivateNodeInterface;
110102 return CreateSignalObserverNode (PrivateNodeInterface::GraphPtr (dep1), std::forward<F>(func), dep1, deps ...);
111103 }
112104
113105 template <typename F, typename T>
114- auto CreateEventObserverNode (const std::shared_ptr< REACT_IMPL ::ReactiveGraph>& graphPtr , F&& func, const Event<T>& dep) -> decltype(auto )
106+ auto CreateEventObserverNode (const Group& group , F&& func, const Event<T>& dep) -> decltype(auto )
115107 {
116108 using REACT_IMPL ::PrivateEventLinkNodeInterface;
117109 using ObsNodeType = REACT_IMPL ::EventObserverNode<typename std::decay<F>::type, T>;
118110
119- return std::make_shared<ObsNodeType>(graphPtr , std::forward<F>(func), PrivateEventLinkNodeInterface::GetLocalNodePtr (graphPtr, dep));
111+ return std::make_shared<ObsNodeType>(group , std::forward<F>(func), PrivateEventLinkNodeInterface::GetLocalNodePtr (graphPtr, dep));
120112 }
121113
122114 template <typename F, typename T>
123115 auto CreateEventObserverNode (F&& func, const Event<T>& dep) -> decltype(auto )
124116 {
125- using REACT_IMPL ::PrivateNodeInterface;
126117 return CreateEventObserverNode (PrivateNodeInterface::GraphPtr (dep), std::forward<F>(func), dep);
127118 }
128119
129120 template <typename F, typename T, typename ... Us>
130- auto CreateSyncedEventObserverNode (const std::shared_ptr< REACT_IMPL ::ReactiveGraph>& graphPtr , F&& func, const Event<T>& dep, const Signal<Us>& ... syncs) -> decltype(auto )
121+ auto CreateSyncedEventObserverNode (const Group& group , F&& func, const Event<T>& dep, const Signal<Us>& ... syncs) -> decltype(auto )
131122 {
132123 using REACT_IMPL ::PrivateEventLinkNodeInterface;
133124 using REACT_IMPL ::PrivateSignalLinkNodeInterface;
@@ -140,14 +131,11 @@ class Observer
140131 template <typename F, typename T, typename ... Us>
141132 auto CreateSyncedEventObserverNode (F&& func, const Event<T>& dep, const Signal<Us>& ... syncs) -> decltype(auto )
142133 {
143- using REACT_IMPL ::PrivateNodeInterface;
144134 return CreateSyncedEventObserverNode (PrivateNodeInterface::GraphPtr (dep), std::forward<F>(func), dep, syncs ...);
145135 }
146136
147137private:
148- std::shared_ptr<NodeType> nodePtr_;
149-
150- friend struct REACT_IMPL ::PrivateNodeInterface;
138+ std::shared_ptr<NodeType> nodePtr_;s
151139};
152140
153141/* *****************************************/ REACT_END /* *****************************************/
0 commit comments