+
+JobParameters_cpp
+SALOME_Launcher::JobParameters_CORBA2CPP(
+ const Engines::JobParameters& job_parameters)
+{
+ JobParameters_cpp result;
+
+ result.job_name = job_parameters.job_name.in();
+ result.job_type = job_parameters.job_type.in();
+ result.job_file = job_parameters.job_file.in();
+ result.pre_command = job_parameters.pre_command.in();
+ result.env_file = job_parameters.env_file.in();
+
+ result.in_files.clear();
+ for (CORBA::ULong i = 0; i < job_parameters.in_files.length(); i++)
+ result.in_files.push_back(job_parameters.in_files[i].in());
+ result.out_files.clear();
+ for (CORBA::ULong i = 0; i < job_parameters.out_files.length(); i++)
+ result.out_files.push_back(job_parameters.out_files[i].in());
+
+ result.work_directory = job_parameters.work_directory.in();
+ result.local_directory = job_parameters.local_directory.in();
+ result.result_directory = job_parameters.result_directory.in();
+ result.maximum_duration = job_parameters.maximum_duration.in();
+
+ result.resource_required = resourceParameters_CORBAtoCPP(job_parameters.resource_required);
+
+ result.queue = job_parameters.queue.in();
+ result.partition = job_parameters.partition.in();
+ result.exclusive = job_parameters.exclusive;
+ result.mem_per_cpu = job_parameters.mem_per_cpu;
+ result.wckey = job_parameters.wckey.in();
+ result.extra_params = job_parameters.extra_params.in();
+
+ result.specific_parameters.clear();
+ for (CORBA::ULong i = 0; i < job_parameters.specific_parameters.length(); i++)
+ result.specific_parameters[job_parameters.specific_parameters[i].name.in()]
+ = job_parameters.specific_parameters[i].value.in();
+
+ result.launcher_file = job_parameters.launcher_file.in();
+ result.launcher_args = job_parameters.launcher_args.in();
+ return result;
+}
+
+Engines::JobParameters_var
+SALOME_Launcher::JobParameters_CPP2CORBA(const JobParameters_cpp& job_parameters)
+{
+ Engines::JobParameters_var result = new Engines::JobParameters;
+ result->job_name = CORBA::string_dup(job_parameters.job_name.c_str());
+ result->job_type = CORBA::string_dup(job_parameters.job_type.c_str());
+ 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((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((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)
+ {
+ result->out_files[i] = CORBA::string_dup(it.c_str());
+ i++;
+ }
+
+ result->work_directory = CORBA::string_dup(job_parameters.work_directory.c_str());
+ result->local_directory = CORBA::string_dup(job_parameters.local_directory.c_str());
+ result->result_directory = CORBA::string_dup(job_parameters.result_directory.c_str());
+ result->maximum_duration = CORBA::string_dup(job_parameters.maximum_duration.c_str());
+
+ result->resource_required = resourceParameters_CPPtoCORBA(job_parameters.resource_required);
+
+ result->queue = CORBA::string_dup(job_parameters.queue.c_str());
+ result->partition = CORBA::string_dup(job_parameters.partition.c_str());
+ result->exclusive = job_parameters.exclusive;
+ result->mem_per_cpu = job_parameters.mem_per_cpu;
+ result->wckey = CORBA::string_dup(job_parameters.wckey.c_str());
+ result->extra_params = CORBA::string_dup(job_parameters.extra_params.c_str());
+
+ const std::map<std::string, std::string>& specific_parameters
+ = job_parameters.specific_parameters;
+ if (!specific_parameters.empty())
+ {
+ 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)
+ {
+ Engines::Parameter_var new_param = new Engines::Parameter;
+ new_param->name = CORBA::string_dup(it_specific.first.c_str());
+ new_param->value = CORBA::string_dup(it_specific.second.c_str());
+ result->specific_parameters[i] = new_param;
+ i++;
+ }
+ }
+
+ result->launcher_file = CORBA::string_dup(job_parameters.launcher_file.c_str());
+ 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;
+}