X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Fyacsloader%2Fdriver.cxx;h=95f0e4de67035ac0b07e5b6df04a61f94328a5d6;hb=8f301c0d9386e2e8fe72e88ce6b07032cd7270e8;hp=d1586eaf7a8ae3dd900eb1bc79d33f7503ed91d0;hpb=fbc4862b8d9d3803c5058c2d77e341b0cc3b1313;p=modules%2Fyacs.git diff --git a/src/yacsloader/driver.cxx b/src/yacsloader/driver.cxx index d1586eaf7..95f0e4de6 100644 --- a/src/yacsloader/driver.cxx +++ b/src/yacsloader/driver.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2006-2019 CEA/DEN, EDF R&D +// Copyright (C) 2006-2021 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -31,11 +31,14 @@ #include "LinkInfo.hxx" #include "ObserverAsPlugin.hxx" -#ifdef SALOME_KERNEL +#include "KernelBasis.hxx" +#include "SALOME_Launcher.hxx" +#include "ServiceUnreachable.hxx" +#include "SALOME_NamingService_Wrapper.hxx" #include "SALOME_NamingService.hxx" #include "SALOME_ModuleCatalog.hh" +#include "SALOMESDS_DataServerManager.hxx" #include "Basics_Utils.hxx" -#endif #include #include @@ -294,6 +297,39 @@ bool parse_init_port(const std::string& input, std::string& node, std::string& p return true; } +void InitializeSSL() +{ + setSSLMode(true); + KERNEL::getLauncherSA(); +} + +void shutdownServers() +{ + // shutdown data server scopes + try + { + YACS::ENGINE::RuntimeSALOME* runTime = YACS::ENGINE::getSALOMERuntime(); + runTime->loadModulCatalog(); + CORBA::ORB_ptr orb = runTime->getOrb(); + if (orb) + { + SALOME_NamingService_Wrapper namingService(orb); + CORBA::Object_var objDSM(namingService.Resolve(SALOMESDS::DataServerManager::NAME_IN_NS)); + SALOME::DataServerManager_var dsm(SALOME::DataServerManager::_narrow(objDSM)); + if ( !CORBA::is_nil(dsm) ) + dsm->shutdownScopes(); + } + } + catch(const CORBA::Exception& ) + { + // ignore and continue + } + catch(ServiceUnreachable& e) + { + // ignore and continue + } +} + int main (int argc, char* argv[]) { @@ -306,7 +342,7 @@ int main (int argc, char* argv[]) myArgs.dump = 0; myArgs.loadState = (char *)""; myArgs.xmlSchema = (char *)""; - myArgs.shutdown = 1; + myArgs.shutdown = 10; myArgs.reset = 0; myArgs.killPort = 0; myArgs.init_ports.clear(); @@ -339,6 +375,8 @@ int main (int argc, char* argv[]) setsig(SIGTERM,&Handler); #endif + InitializeSSL(); + timer("Starting "); long flags = RuntimeSALOME::UsePython + RuntimeSALOME::UseCorba + RuntimeSALOME::UseXml + \ RuntimeSALOME::UseCpp + RuntimeSALOME::UseSalome; @@ -348,10 +386,11 @@ int main (int argc, char* argv[]) try { YACS::ENGINE::RuntimeSALOME* runTime = YACS::ENGINE::getSALOMERuntime(); + runTime->loadModulCatalog(); CORBA::ORB_ptr orb = runTime->getOrb(); if (orb) { - SALOME_NamingService namingService(orb); + SALOME_NamingService_Wrapper namingService(orb); CORBA::Object_var obj = namingService.Resolve("/Kernel/ModulCatalog"); SALOME_ModuleCatalog::ModuleCatalog_var aModuleCatalog = SALOME_ModuleCatalog::ModuleCatalog::_narrow(obj); if (! CORBA::is_nil(aModuleCatalog)) @@ -487,11 +526,12 @@ int main (int argc, char* argv[]) } if (myArgs.stop) + { if (strlen(myArgs.dumpErrorFile) >0) executor.setStopOnError(true, myArgs.dumpErrorFile); else executor.setStopOnError(false, myArgs.dumpErrorFile); - + } if(myArgs.display>0) { std::ofstream f("toto"); @@ -553,6 +593,7 @@ int main (int argc, char* argv[]) if(myArgs.shutdown < 999) { p->shutdown(myArgs.shutdown); + shutdownServers(); } delete p; Runtime* r=YACS::ENGINE::getRuntime();