@@ -39,7 +39,7 @@ class FoldBaseNode : public SignalNode<D,S>
3939 {
4040 }
4141
42- virtual void Tick (void * turnPtr) override
42+ virtual EUpdateResult Tick (void * turnPtr) override
4343 {
4444 using TurnT = typename D::Engine::TurnT;
4545 TurnT& turn = *static_cast <TurnT*>(turnPtr);
@@ -56,12 +56,12 @@ class FoldBaseNode : public SignalNode<D,S>
5656 {
5757 value_ = newValue;
5858 Engine::OnNodePulse (*this , turn);
59- return ;
59+ return EUpdateResult::changed ;
6060 }
6161 else
6262 {
6363 Engine::OnNodeIdlePulse (*this , turn);
64- return ;
64+ return EUpdateResult::unchanged ;
6565 }
6666 }
6767
@@ -186,7 +186,7 @@ class HoldNode : public SignalNode<D,S>
186186
187187 virtual const char * GetNodeType () const override { return " HoldNode" ; }
188188
189- virtual void Tick (void * turnPtr) override
189+ virtual EUpdateResult Tick (void * turnPtr) override
190190 {
191191 using TurnT = typename D::Engine::TurnT;
192192 TurnT& turn = *static_cast <TurnT*>(turnPtr);
@@ -210,9 +210,15 @@ class HoldNode : public SignalNode<D,S>
210210 GetObjectId (*this ), turn.Id ()));
211211
212212 if (changed)
213+ {
213214 Engine::OnNodePulse (*this , turn);
215+ return EUpdateResult::changed;
216+ }
214217 else
218+ {
215219 Engine::OnNodeIdlePulse (*this , turn);
220+ return EUpdateResult::unchanged;
221+ }
216222 }
217223
218224 virtual int DependencyCount () const override { return 1 ; }
@@ -252,7 +258,7 @@ class SnapshotNode : public SignalNode<D,S>
252258
253259 virtual const char * GetNodeType () const override { return " SnapshotNode" ; }
254260
255- virtual void Tick (void * turnPtr) override
261+ virtual EUpdateResult Tick (void * turnPtr) override
256262 {
257263 using TurnT = typename D::Engine::TurnT;
258264 TurnT& turn = *static_cast <TurnT*>(turnPtr);
@@ -278,9 +284,15 @@ class SnapshotNode : public SignalNode<D,S>
278284 GetObjectId (*this ), turn.Id (), std::this_thread::get_id ().hash ()));
279285
280286 if (changed)
287+ {
281288 Engine::OnNodePulse (*this , turn);
289+ return EUpdateResult::changed;
290+ }
282291 else
292+ {
283293 Engine::OnNodeIdlePulse (*this , turn);
294+ return EUpdateResult::unchanged;
295+ }
284296 }
285297
286298 virtual int DependencyCount () const override { return 2 ; }
@@ -317,7 +329,7 @@ class MonitorNode : public EventStreamNode<D,E>
317329
318330 virtual const char * GetNodeType () const override { return " MonitorNode" ; }
319331
320- virtual void Tick (void * turnPtr) override
332+ virtual EUpdateResult Tick (void * turnPtr) override
321333 {
322334 using TurnT = typename D::Engine::TurnT;
323335 TurnT& turn = *static_cast <TurnT*>(turnPtr);
@@ -333,9 +345,15 @@ class MonitorNode : public EventStreamNode<D,E>
333345 GetObjectId (*this ), turn.Id ()));
334346
335347 if (events_.size () > 0 )
336- Engine::OnNodePulse (*this , *static_cast <TurnT*>(turnPtr));
348+ {
349+ Engine::OnNodePulse (*this , turn);
350+ return EUpdateResult::changed;
351+ }
337352 else
338- Engine::OnNodeIdlePulse (*this , *static_cast <TurnT*>(turnPtr));
353+ {
354+ Engine::OnNodeIdlePulse (*this , turn);
355+ return EUpdateResult::unchanged;
356+ }
339357 }
340358
341359 virtual int DependencyCount () const override { return 1 ; }
@@ -375,7 +393,7 @@ class PulseNode : public EventStreamNode<D,S>
375393
376394 virtual const char * GetNodeType () const override { return " PulseNode" ; }
377395
378- virtual void Tick (void * turnPtr) override
396+ virtual EUpdateResult Tick (void * turnPtr) override
379397 {
380398 typedef typename D::Engine::TurnT TurnT;
381399 TurnT& turn = *static_cast <TurnT*>(turnPtr);
@@ -393,9 +411,15 @@ class PulseNode : public EventStreamNode<D,S>
393411 GetObjectId (*this ), turn.Id ()));
394412
395413 if (events_.size () > 0 )
414+ {
396415 Engine::OnNodePulse (*this , turn);
416+ return EUpdateResult::changed;
417+ }
397418 else
419+ {
398420 Engine::OnNodeIdlePulse (*this , turn);
421+ return EUpdateResult::unchanged;
422+ }
399423 }
400424
401425 virtual int DependencyCount () const { return 2 ; }
@@ -438,7 +462,7 @@ class EventFlattenNode : public EventStreamNode<D, TInner>
438462
439463 virtual bool IsDynamicNode () const override { return true ; }
440464
441- virtual void Tick (void * turnPtr) override
465+ virtual EUpdateResult Tick (void * turnPtr) override
442466 {
443467 typedef typename D::Engine::TurnT TurnT;
444468 TurnT& turn = *static_cast <TurnT*>(turnPtr);
@@ -459,7 +483,7 @@ class EventFlattenNode : public EventStreamNode<D, TInner>
459483 Engine::OnDynamicNodeDetach (*this , *oldInner, turn);
460484 Engine::OnDynamicNodeAttach (*this , *newInner, turn);
461485
462- return ;
486+ return EUpdateResult::invalidated ;
463487 }
464488
465489 REACT_LOG (D::Log ().template Append <NodeEvaluateBeginEvent>(
@@ -473,12 +497,12 @@ class EventFlattenNode : public EventStreamNode<D, TInner>
473497 if (events_.size () > 0 )
474498 {
475499 Engine::OnNodePulse (*this , *static_cast <TurnT*>(turnPtr));
476- return ;
500+ return EUpdateResult::changed ;
477501 }
478502 else
479503 {
480504 Engine::OnNodeIdlePulse (*this , *static_cast <TurnT*>(turnPtr));
481- return ;
505+ return EUpdateResult::unchanged ;
482506 }
483507 }
484508
0 commit comments