X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FLauncher%2FSALOME_Launcher.cxx;h=11d16abac88d8c318034719f6e118bd37b7cf43b;hb=888f04cad3e3fa57bf92c96789959fc87bfdd555;hp=565e2a0728814a3fb66d3536c2fbe69776ad32ed;hpb=e83c49c22e04a5719890de53f54160295864f900;p=modules%2Fkernel.git diff --git a/src/Launcher/SALOME_Launcher.cxx b/src/Launcher/SALOME_Launcher.cxx index 565e2a072..11d16abac 100644 --- a/src/Launcher/SALOME_Launcher.cxx +++ b/src/Launcher/SALOME_Launcher.cxx @@ -1,4 +1,4 @@ -// 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 @@ -58,10 +58,21 @@ const char *SALOME_Launcher::_LauncherNameInNS = "/SalomeLauncher"; * \param orb */ //============================================================================= -SALOME_Launcher::SALOME_Launcher(CORBA::ORB_ptr orb, PortableServer::POA_var poa) : _l() +SALOME_Launcher::SALOME_Launcher(CORBA::ORB_ptr orb, PortableServer::POA_var poa) { MESSAGE("SALOME_Launcher constructor"); _NS = new SALOME_NamingService(orb); + init(orb,poa); + MESSAGE("SALOME_Launcher constructor end"); +} + +SALOME_Launcher::SALOME_Launcher(CORBA::ORB_ptr orb, PortableServer::POA_var poa, SALOME_NamingService_Abstract *externalNS):_NS(externalNS) +{ + init(orb,poa); +} + +void SALOME_Launcher::init(CORBA::ORB_ptr orb, PortableServer::POA_var poa) +{ _ResManager = new SALOME_ResourcesManager(orb,poa,_NS); _l.SetResourcesManager(_ResManager->GetImpl()); _ContManager = new SALOME_ContainerManager(orb,poa,_NS); @@ -73,9 +84,7 @@ SALOME_Launcher::SALOME_Launcher(CORBA::ORB_ptr orb, PortableServer::POA_var poa PortableServer::ObjectId_var id = _poa->activate_object(this); CORBA::Object_var obj = _poa->id_to_reference(id); Engines::SalomeLauncher_var refContMan = Engines::SalomeLauncher::_narrow(obj); - _NS->Register(refContMan,_LauncherNameInNS); - MESSAGE("SALOME_Launcher constructor end"); } //============================================================================= @@ -158,6 +167,20 @@ SALOME_Launcher::getAssignedHostnames(CORBA::Long job_id) return CORBA::string_dup(result.c_str()); } +void +SALOME_Launcher::exportInputFiles(CORBA::Long job_id) +{ + try + { + _l.exportInputFiles(job_id); + } + catch(const LauncherException &ex) + { + INFOS(ex.msg.c_str()); + THROW_SALOME_CORBA_EXCEPTION(ex.msg.c_str(),SALOME::BAD_PARAM); + } +} + void SALOME_Launcher::getJobResults(CORBA::Long job_id, const char * directory) { @@ -218,6 +241,11 @@ SALOME_Launcher::getJobWorkFile(CORBA::Long job_id, const char * work_file, cons return rtn; } +void SALOME_Launcher::DeclareUsingSalomeSession() +{ + this->_ContManager->DeclareUsingSalomeSession(); +} + void SALOME_Launcher::removeJob(CORBA::Long job_id) { @@ -359,6 +387,8 @@ SALOME_Launcher::testBatch(const Engines::ResourceParameters& params) void SALOME_Launcher::Shutdown() { MESSAGE("Shutdown"); + if(!_NS) + return; _NS->Destroy_Name(_LauncherNameInNS); _ContManager->Shutdown(); _ResManager->Shutdown(); @@ -627,7 +657,7 @@ SALOME_Launcher::JobParameters_CPP2CORBA(const JobParameters_cpp& job_parameters result->job_file = CORBA::string_dup(job_parameters.job_file.c_str()); result->pre_command = CORBA::string_dup(job_parameters.pre_command.c_str()); result->env_file = CORBA::string_dup(job_parameters.env_file.c_str()); - result->in_files.length(job_parameters.in_files.size()); + result->in_files.length((CORBA::ULong)job_parameters.in_files.size()); //!< TODO: conversion from size_t to CORBA::ULong int i = 0; for(const std::string& it : job_parameters.in_files) @@ -635,7 +665,7 @@ SALOME_Launcher::JobParameters_CPP2CORBA(const JobParameters_cpp& job_parameters result->in_files[i] = CORBA::string_dup(it.c_str()); i++; } - result->out_files.length(job_parameters.out_files.size()); + result->out_files.length((CORBA::ULong)job_parameters.out_files.size()); //!< TODO: conversion from size_t to CORBA::ULong i = 0; for(const std::string& it : job_parameters.out_files) { @@ -661,7 +691,7 @@ SALOME_Launcher::JobParameters_CPP2CORBA(const JobParameters_cpp& job_parameters = job_parameters.specific_parameters; if (!specific_parameters.empty()) { - result->specific_parameters.length(specific_parameters.size()); + result->specific_parameters.length((CORBA::ULong)specific_parameters.size()); //!< TODO: conversion from size_t to CORBA::ULong CORBA::ULong i = 0; for (const auto& it_specific : specific_parameters) { @@ -677,3 +707,20 @@ SALOME_Launcher::JobParameters_CPP2CORBA(const JobParameters_cpp& job_parameters result->launcher_args = CORBA::string_dup(job_parameters.launcher_args.c_str()); return result; } + +static SALOME_Launcher *_launcher_singleton_ssl = nullptr; + +#include "SALOME_Fake_NamingService.hxx" + +SALOME_Launcher *KERNEL::getLauncherSA() +{ + if(!_launcher_singleton_ssl) + { + int argc(0); + CORBA::ORB_var orb = CORBA::ORB_init(argc,nullptr); + PortableServer::POA_var root_poa=PortableServer::POA::_the_root_poa(); + SALOME_Fake_NamingService *ns=new SALOME_Fake_NamingService(orb); + _launcher_singleton_ssl = new SALOME_Launcher(orb,root_poa,ns);//3rd arg is important to skip NS ! + } + return _launcher_singleton_ssl; +}