#include <Python.h>
-class MyAutoThreadSaver
-{
-public:
- MyAutoThreadSaver():_save(PyEval_SaveThread()) { }
- ~MyAutoThreadSaver() { PyEval_RestoreThread(_save); }
-private:
- PyThreadState *_save;
-};
-
YACSEvalYFX *YACSEvalYFX::BuildFromFile(const std::string& xmlOfScheme)
{
YACS::ENGINE::RuntimeSALOME::setRuntime();
{
checkPortsForEvaluation(inputsOfInterest,outputsOfInterest);
_pattern->setOutPortsOfInterestForEvaluation(outputsOfInterest);
- _pattern->generateGraph();
}
void YACSEvalYFX::unlockAll()
bool YACSEvalYFX::run(YACSEvalSession *session, int& nbOfBranches)
{
- _pattern->assignRandomVarsInputs();
- YACSEvalListOfResources *rss(giveResources());
- if(!rss->isInteractive())
- throw YACS::Exception("YACSEvalYFX::run : not implemented yet for non interactive !");
- YACSEvalSession *mySession(session);
- YACS::AutoCppPtr<YACSEvalSession> loc;
+ _pattern->generateGraph();
if(!session)
{
throw YACS::Exception("YACSEvalYFX::run : input session in null !");
- /*loc=new YACSEvalSession;
- mySession=loc;*/
}
+ session->launch();
+ YACSEvalListOfResources *rss(giveResources());
+ rss->checkOKForRun();
+ _pattern->assignRandomVarsInputs();
rss->apply();
nbOfBranches=_pattern->assignNbOfBranches();
- mySession->launch();
- YACS::ENGINE::Executor exe;
- exe.setKeepGoingProperty(!_params.getStopASAPAfterErrorStatus());
- //
- _pattern->emitStart();
- {
- MyAutoThreadSaver locker;
- exe.RunW(getUndergroundGeneratedGraph());
- }
- return getUndergroundGeneratedGraph()->getState()==YACS::DONE;
+ return _pattern->go(_params.getStopASAPAfterErrorStatus(),session);
}
void YACSEvalYFX::registerObserver(YACSEvalObserver *observer)