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();
- //
- {
- YACS::ENGINE::AutoGIL gal;
- _salomeInstanceModule=PyImport_ImportModule(const_cast<char *>("salome_instance"));
- }
+ YACS::ENGINE::AutoGIL gal;
+ _salomeInstanceModule=PyImport_ImportModule(const_cast<char *>("salome_instance"));
}
YACSEvalSession::~YACSEvalSession()
{
delete _internal;
YACS::ENGINE::AutoGIL gal;
- if(isLaunched())
+ if(isLaunched() && !isAttached())
{
YACS::ENGINE::AutoPyRef terminateSession(PyObject_GetAttrString(_salomeInstance,const_cast<char *>("stop")));//new
YACS::ENGINE::AutoPyRef res(PyObject_CallObject(terminateSession,0));
return ;
YACS::ENGINE::AutoGIL gal;
_corbaConfigFileName=GetConfigAndPort(_port);
+ _isAttached=true; _isLaunched=true;
+}
+
+bool YACSEvalSession::isAlreadyPyThreadSaved() const
+{
+ return _isForcedPyThreadSaved;
}
void YACSEvalSession::checkLaunched() const