Salome HOME
Addition of notification mechanism in evalyfx.
[modules/yacs.git] / src / evalyfx / YACSEvalYFX.cxx
index a96558401c5956af8d8c7336d746adb08297348c..aba327e7457aa083f5b7a83347ea624a215ad441 100644 (file)
@@ -46,7 +46,6 @@ private:
   PyThreadState *_save;
 };
 
-
 YACSEvalYFX *YACSEvalYFX::BuildFromFile(const std::string& xmlOfScheme)
 {
   YACS::ENGINE::RuntimeSALOME::setRuntime();
@@ -114,7 +113,9 @@ bool YACSEvalYFX::run(YACSEvalSession *session, int& nbOfBranches)
   nbOfBranches=_pattern->assignNbOfBranches();
   mySession->launch();
   YACS::ENGINE::Executor exe;
+  exe.setKeepGoingProperty(!_params.getStopASAPAfterErrorStatus());
   //
+  _pattern->emitStart();
   {
     MyAutoThreadSaver locker;
     exe.RunW(getUndergroundGeneratedGraph());
@@ -122,6 +123,20 @@ bool YACSEvalYFX::run(YACSEvalSession *session, int& nbOfBranches)
   return getUndergroundGeneratedGraph()->getState()==YACS::DONE;
 }
 
+void YACSEvalYFX::registerObserver(YACSEvalObserver *observer)
+{
+  if(!_pattern)
+    throw YACS::Exception("YACSEvalYFX::registerObserver : no pattern !");
+  _pattern->registerObserver(observer);
+}
+
+YACSEvalObserver *YACSEvalYFX::getObserver()
+{
+  if(!_pattern)
+    throw YACS::Exception("YACSEvalYFX::getObserver : no pattern !");
+  return _pattern->getObserver();
+}
+
 std::vector<YACSEvalSeqAny *> YACSEvalYFX::getResults() const
 {
   return _pattern->getResults();
@@ -134,7 +149,7 @@ YACS::ENGINE::Proc *YACSEvalYFX::getUndergroundGeneratedGraph() const
 
 YACSEvalYFX::YACSEvalYFX(YACS::ENGINE::Proc *scheme, bool ownScheme):_pattern(0)
 {
-  _pattern=YACSEvalYFXPattern::FindPatternFrom(scheme,ownScheme);
+  _pattern=YACSEvalYFXPattern::FindPatternFrom(this,scheme,ownScheme);
 }
 
 void YACSEvalYFX::checkPortsForEvaluation(const std::vector< YACSEvalInputPort * >& inputs, const std::vector< YACSEvalOutputPort * >& outputs) const