const char YACSEvalSession::NSPORT_VAR_NAME[]="NSPORT";
-YACSEvalSession::YACSEvalSession():_isAttached(false),_isLaunched(false),_port(-1),_salomeInstanceModule(0),_salomeInstance(0),_internal(new YACSEvalSessionInternal)
+YACSEvalSession::YACSEvalSession():_isAttached(false),_isLaunched(false),_isForcedPyThreadSaved(false),_port(-1),_salomeInstanceModule(0),_salomeInstance(0),_internal(new YACSEvalSessionInternal)
{
if(!Py_IsInitialized())
Py_Initialize();
_isAttached=true; _isLaunched=true;
}
+bool YACSEvalSession::isAlreadyPyThreadSaved() const
+{
+ if(!_isForcedPyThreadSaved)
+ return isAttached();
+ else
+ return true;
+}
+
void YACSEvalSession::checkLaunched() const
{
if(!isLaunched())
YACSEVALYFX_EXPORT void launchUsingCurrentSession();
YACSEVALYFX_EXPORT bool isLaunched() const { return _isLaunched; }
YACSEVALYFX_EXPORT bool isAttached() const { return _isAttached; }
+ //
+ YACSEVALYFX_EXPORT bool isAlreadyPyThreadSaved() const;
+ YACSEVALYFX_EXPORT bool getForcedPyThreadSavedStatus() const { return _isForcedPyThreadSaved; }
+ YACSEVALYFX_EXPORT void setForcedPyThreadSavedStatus(bool status) { _isForcedPyThreadSaved=status; }
+ //
YACSEVALYFX_EXPORT void checkLaunched() const;
YACSEVALYFX_EXPORT int getPort() const;
YACSEVALYFX_EXPORT std::string getCorbaConfigFileName() const;
private:
bool _isAttached;
bool _isLaunched;
+ bool _isForcedPyThreadSaved;
int _port;
std::string _corbaConfigFileName;
PyObject *_salomeInstanceModule;
YACS::ENGINE::Executor exe;
exe.setKeepGoingProperty(!stopASAP);
{
- MyAutoThreadSaver locker(!session->isAttached());
+ MyAutoThreadSaver locker(!session->isAlreadyPyThreadSaved());
exe.RunW(getUndergroundGeneratedGraph());
}
return getUndergroundGeneratedGraph()->getState()==YACS::DONE;
void launch();
bool isLaunched() const;
bool isAttached() const;
+ bool isAlreadyPyThreadSaved() const;
+ bool getForcedPyThreadSavedStatus() const;
+ void setForcedPyThreadSavedStatus(bool status);
void checkLaunched() const;
int getPort() const;
std::string getCorbaConfigFileName() const;