-// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012 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
*
*/
+#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <Batch_config.h>
+#include "Batch_Constants.hxx"
#include "Batch_BatchManager_eClient.hxx"
#include "Batch_RunTimeException.hxx"
namespace Batch {
BatchManager_eClient::BatchManager_eClient(const Batch::FactBatchManager * parent, const char* host,
+ const char * username,
CommunicationProtocolType protocolType, const char* mpiImpl)
- : BatchManager(parent, host), _protocol(CommunicationProtocol::getInstance(protocolType)), _username("")
+ : BatchManager(parent, host), _protocol(CommunicationProtocol::getInstance(protocolType)),
+ _username(username)
{
// instanciation of mpi implementation needed to launch executable in batch script
_mpiImpl = FactoryMpiImpl(mpiImpl);
{
int status;
Parametre params = job.getParametre();
- Versatile V = params[INFILE];
- Versatile::iterator Vit;
+ const Versatile & V = params[INFILE];
+ Versatile::const_iterator Vit;
status = _protocol.makeDirectory(string(params[TMPDIR]) + "/logs", _hostname, _username);
if(status) {
void BatchManager_eClient::importOutputFiles( const Job & job, const string directory )
{
Parametre params = job.getParametre();
- Versatile V = params[OUTFILE];
- Versatile::iterator Vit;
- _username = string(params[USER]);
+ const Versatile & V = params[OUTFILE];
+ Versatile::const_iterator Vit;
// Create local result directory
int status = CommunicationProtocol::getInstance(SH).makeDirectory(directory, "", "");
}
+ bool BatchManager_eClient::importDumpStateFile( const Job & job, const string directory )
+ {
+ Parametre params = job.getParametre();
+
+ // Create local result directory
+ int status = CommunicationProtocol::getInstance(SH).makeDirectory(directory, "", "");
+ if (status) {
+ string mess("Directory creation failed. Status is :");
+ ostringstream status_str;
+ status_str << status;
+ mess += status_str.str();
+ cerr << mess << endl;
+ }
+
+ bool ret = true;
+ status = _protocol.copyFile(string(params[TMPDIR]) + string("/dumpState*.xml"), _hostname, _username,
+ directory, "", "");
+ if (status) {
+ // Try to get what we can (logs files)
+ // throw BatchException("Error of connection on remote host");
+ std::string mess("Copy command failed ! status is :");
+ ostringstream status_str;
+ status_str << status;
+ mess += status_str.str();
+ cerr << mess << endl;
+ ret = false;
+ }
+ return ret;
+ }
+
MpiImpl *BatchManager_eClient::FactoryMpiImpl(string mpiImpl)
{
if(mpiImpl == "lam")
#ifdef WIN32
string fileName = generateTemporaryFileName(prefix);
- outputStream.open(fileName.c_str());
+ // Open the file as binary to avoid problems with Windows newlines
+ outputStream.open(fileName.c_str(), ios_base::binary | ios_base::out);
#else