-// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
* \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);
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");
}
//=============================================================================
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)
{
return rtn;
}
+void SALOME_Launcher::DeclareUsingSalomeSession()
+{
+ this->_ContManager->DeclareUsingSalomeSession();
+}
+
void
SALOME_Launcher::removeJob(CORBA::Long job_id)
{
void SALOME_Launcher::Shutdown()
{
MESSAGE("Shutdown");
+ if(!_NS)
+ return;
_NS->Destroy_Name(_LauncherNameInNS);
_ContManager->Shutdown();
_ResManager->Shutdown();
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)
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)
{
= 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)
{
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)
+ {
+ CORBA::ORB_var orb = KERNEL::GetRefToORB();
+ //[EDF26673] : do not release the POA object returned by _the_root_poa.
+ PortableServer::POA_ptr root_poa = PortableServer::POA::_the_root_poa();
+ PortableServer::POAManager_var pman = root_poa->the_POAManager();
+ CORBA::PolicyList policies;
+ policies.length(1);
+ PortableServer::ThreadPolicy_var threadPol(root_poa->create_thread_policy(PortableServer::SINGLE_THREAD_MODEL));
+ policies[0] = PortableServer::ThreadPolicy::_duplicate(threadPol);
+ PortableServer::POA_var safePOA = root_poa->create_POA("SingleThreadPOA",
+ pman,
+ policies);
+ threadPol->destroy();
+ SALOME_Fake_NamingService *ns=new SALOME_Fake_NamingService(orb);
+ _launcher_singleton_ssl = new SALOME_Launcher(orb,safePOA,ns);//3rd arg is important to skip NS !
+ }
+ return _launcher_singleton_ssl;
+}