# -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
#
# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
# sys.setdlopenflags(flags)
# pass
-orb, lcc, naming_service, cm, sg, esm, dsm = None,None,None,None,None,None,None
+orb, lcc, naming_service, cm, sg, esm, dsm, modulcat = None,None,None,None,None,None,None,None
myStudy, myStudyName = None,None
salome_initial=True
+
+__EMB_SERVANT_ENV_VAR_NAME = "SALOME_EMB_SERVANT"
+
+def standalone():
+ import os
+ os.environ[__EMB_SERVANT_ENV_VAR_NAME] = "1"
+
def salome_init(path=None, embedded=False):
+ import os
+ if __EMB_SERVANT_ENV_VAR_NAME in os.environ:
+ salome_init_without_session()
+ else:
+ import KernelBasis
+ if KernelBasis.getSSLMode():
+ salome_init_without_session()
+ else:
+ salome_init_with_session(path, embedded)
+
+class StandAloneLifecyle:
+ def __init__(self, containerManager, resourcesManager):
+ self._cm = containerManager
+ self._rm = resourcesManager
+
+ def FindOrLoadComponent(self,contName,moduleName):
+ global orb
+ import importlib
+ builder_name = moduleName + "_SalomeSessionless"
+ moduleObj = importlib.import_module(builder_name)
+ result, orb = moduleObj.buildInstance(orb)
+ return result
+ #raise RuntimeError("Undealed situation cont = {} module = {}".format(contName,moduleName))
+
+ def getContainerManager(self):
+ return self._cm
+
+ def getResourcesManager(self):
+ return self._rm
+
+def salome_init_without_session():
+ global lcc,myStudy,orb,modulcat,sg,cm
+ import KernelBasis
+ KernelBasis.setSSLMode(True)
+ import KernelDS
+ myStudy = KernelDS.myStudy()
+ import CORBA
+ orb=CORBA.ORB_init([''])
+ import KernelModuleCatalog
+ import SALOME_ModuleCatalog
+ from salome_kernel import list_of_catalogs_regarding_environement
+ modulcat = KernelModuleCatalog.myModuleCatalog( list_of_catalogs_regarding_environement() )
+ import KernelLauncher
+ cm = KernelLauncher.myContainerManager()
+ lcc = StandAloneLifecyle(cm, KernelLauncher.myResourcesManager())
+ # activate poaManager to accept co-localized CORBA calls.
+ poa = orb.resolve_initial_references("RootPOA")
+ poaManager = poa._get_the_POAManager()
+ poaManager.activate()
+ sg = SalomeOutsideGUI()
+ salome_study_init_without_session()
+
+def salome_init_with_session(path=None, embedded=False):
"""
Performs only once SALOME general purpose initialisation for scripts.
Provides:
cm reference to the container manager
esm reference to external server manager
dsm reference to shared dataserver manager
+ modulcat reference to modulecatalog instance
sg access to SALOME GUI (when linked with IAPP GUI)
myStudy active study itself (CORBA reference)
myStudyName active study name
"""
global salome_initial
- global orb, lcc, naming_service, cm, esm, dsm
+ global orb, lcc, naming_service, cm, esm, dsm, modulcat
global sg
global myStudy, myStudyName
-
+ import KernelBasis
+ KernelBasis.setSSLMode(False)
try:
if salome_initial:
salome_initial=False
sg = salome_iapp_init(embedded)
- orb, lcc, naming_service, cm, esm, dsm = salome_kernel_init()
+ orb, lcc, naming_service, cm, esm, dsm, modulcat = salome_kernel_init()
myStudy, myStudyName = salome_study_init(path)
pass
pass
salome_iapp_close()
salome_study_close()
myStudy, myStudyName = None, None
+ import KernelDS
+ KernelDS.KillGlobalSessionInstance()
pass
def salome_NS():